我必须在txt文件中打印出一些值。 他们是按以下格式如何在打印到shell中的文本文件时保留新行?
input="Sno;Name;Field1;Field2"
但是输出必须是:
Sno-Name
FIELDS ALLOCATED:
Field1
Field2
我这样做,像这样:
echo $input | $(awk -F';' '{print $1"-"$2}') >>$txtfile
echo "FIELDS ALLOCATED:">>$txtfile
echo "$input" | cut -d';' -f 3,4 >>$txtfile
这很容易。但是,问题是Field1或Field2可能包含新行。无论何时发生这种情况,cut或awk都不会读取字段4,并将其视为新行。请帮助我如何从给定的输入格式打印两个字段(保留新行)。
字段数是否固定?你对@tripleee的评论意味着没有。我问的原因是,否则似乎没有一个字段分隔符。在第一个示例中,您在字段之间显示分号,但在第二个示例中,您显示换行符。如果一个换行符是一个字段分隔符,并且你不知道有多少个字段,那么如何判断一个字段结束并且下一个字段开始? – cdarke
@cdarke输入有“;”作为分隔符,我现在必须将其转换为用新行分隔的输出,同时还保留原始换行符。正如你可以看到Field1,Field2在彼此之下,所以它与多少个字段无关。例如,Field1:xxx \ n yyy Field2:zzzz \ n aaaa 它应该打印xxx \ n yyy \ n zzzz \ n aaaa – CoderBC
嗯,好的,所以输入字段分隔符是一个分号。 – cdarke