如何使用 AWK 将 \n 添加到文件记录的末尾

如何使用 AWK 将 \n 添加到文件记录的末尾

我有一个可以包含 1 行或多行的文件

oracle1.txt
oracle2.txt
oracle3.txt

如何使用 AWK 在最后一行后面添加 \n 以便显示

oracle1.txt
oracle2.txt
oracle3.txt\n

我尝试过echo -e "\n" >> manifest.txt,但我在文件末尾得到了 -ea 而不是 \n。我究竟做错了什么?

答案1

正如评论中已经提到的,echo >> manifest.txt将在大多数 shell 中完成这项工作,echo '' >> manifest.txt如果您不了解 shell,可能会更安全。

如果你真的想这样做,awk你可以使用一个END规则(也在评论中提到):awk 'END{printf "\n"}' >> manifest.txt

printf您也可以使用print& 代替,也END可以使用BEGINawk 'BEGIN{print ""}' >> manifest.txt

如果您想用作manifest.txt输入awk但不用作输出(awk无法读取和写入同一文件),则一个简单的awk 1 manifest.txt即可(至少在 上GNU awk,如果不是awk '1;END{print ""} manifest.txt应该可以解决问题)。这是因为输入被分成记录记录分隔符 RS(默认为\n) ,1将始终评估为 true,因此默认值行动( {print}) 将对所有行执行。print相当于print $0又与 相同printf $0 ORSORS输出记录分隔符默认为\n.所以即使最后记录输入中不以 结尾,输出中将\n紧随其后。\n

相关内容