【发布时间】:2016-07-08 06:27:46
【问题描述】:
我必须在 txt 文件中打印出一些值。 它们具有以下格式
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 输入有“;”作为分隔符,我现在必须将其转换为用新行分隔的输出,同时还要保留原始换行符。如您所见,Field1、Field2 位于彼此下方,因此与多少字段无关。例如,Field1: xxx \n yyy Field2: zzzz \n aaaa 它应该打印 xxx \n yyy \n zzzz \n aaaa
-
嗯,好的,所以输入字段分隔符是分号。