创建包含内容的文件,其中内容包含新行

时间:2019-06-17 14:22:20

标签: linux

在Linux中,如何创建文件,其内容应将带有\n(或任何行分隔符)的单行转换为多行。

fileA.txt:

trans_fileA::abcd\ndfghc\n091873\nhhjj 
trans_fileB::a11d\n11hc\n73345

代码:

while read line; do
         file_name=`echo $line | awk -F'::' '{print $1}' `
         file_content=`echo $line | awk -F'::' '{print $2}' `
             echo $file_name
             echo $(eval echo ${file_content}) 
         echo $(eval echo ${file_content}) > fileA.txt

trans_fileA应该为:

abcd
dfghc
091873
hhjj

1 个答案:

答案 0 :(得分:1)

您可以这样操作(使用bash):

# read input file line by line, without interpreting \n
while read -r line  
do 
    # extract name 
    name=$(echo $line | cut -d: -f 1) 
    # extract data 
    data=$(echo $line | cut -d: -f 3)

    # ask sed to replace \n with linefeed and store result in name
    echo $data | sed 's/\\n/\n/g' > "$name"

# read data from given file
done < fileA.txt

您甚至可以编写一个较小的代码:

while read -r line  
    do echo $line | cut -d: -f 3 | sed 's/\\n/\n/g' > "$(echo $line | cut -d: -f 1) "
done < fileA.txt