我必須在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