如何使用awk在文本文件的第一行之前添加空行
我有一些文本文件。我想在每个文本文件的第一行之前添加一个空行。我如何使用awk实现这一点?这应该可以-如何使用awk在文本文件的第一行之前添加空行,awk,Awk,我有一些文本文件。我想在每个文本文件的第一行之前添加一个空行。我如何使用awk实现这一点?这应该可以- awk 'NR==1{a=$0; print ""; next} NR==2{print a; print $0; next}1' file 对于多个文件- awk 'FNR==1{a=$0; print ""; next} FNR==2{print a; print $0; next}1' file1 file2 file3 这将在数据文件的开头提供一个空格: awk 'BEGIN{p
awk 'NR==1{a=$0; print ""; next} NR==2{print a; print $0; next}1' file
对于多个文件-
awk 'FNR==1{a=$0; print ""; next} FNR==2{print a; print $0; next}1' file1 file2 file3
这将在数据文件的开头提供一个空格:
awk 'BEGIN{printf(" ")}1' data.txt
或者,这将在数据文件的开头提供一个空行
awk 'BEGIN{print""}1' data.txt
不需要
awk
:
echo -n ' ' | cat - file
对于此任务,我更愿意使用
GNU-sed
:
在文件开头添加空格:
sed '1s/.*/ &/' file.txt
sed '1i\\' file.txt
要对扩展名为.txt
的多个文本文件执行此操作,并直接对文件进行更改(即覆盖文件),请尝试:
在文件开头添加空行:
sed '1s/.*/ &/' file.txt
sed '1i\\' file.txt
要对扩展名为.txt
的多个文本文件执行此操作,并直接对文件进行更改(即覆盖文件),请尝试:
使用perl进行内联操作:
perl -i -ne 'if(eof){$.=0;}if($.==1){print "\n";}print' temp temp2
temp和temp2是两个不同的文件。执行此命令后,将自动在每个文件的开头添加一个空行。是否需要awk?或者任何unix命令链都能工作吗?非常感谢您的回答。您的代码可以完美地用于单个文件。您能帮我更改多个文件的代码吗?@user1606106当然可以,对多个文件使用
FNR
而不是NR
,并在命令末尾传递每个文件。非常感谢。如何直接对文件进行更改?@user1606106awk
不提供内嵌替换。您可能需要在循环中执行此操作并重定向到新文件。谢谢您的回答。您的代码不能用于多个文件。@user1606106:对不起,我忘了添加-I
标志。它现在应该像预期的那样工作。HTH.您可以放弃for循环,改用-s
。@steve谢谢您的回答。其实我想在第一行前加一个空行,我想我的问题不清楚,我已经修改了我的问题。很抱歉如果可以,请编辑您的答案。@user1606106:我已更新我的答案,在单个文件和多个文件的第一行之前添加一个空行。HTH.如果您有GNU awk可用,BEGINFILE
将对多个文件有用。或者在添加换行符时,echo | cat-file
。