12

我有一些文本文件。我想在每个文本文件的第一行之前添加一个空行。我怎样才能用 awk 做到这一点?

4

5 回答 5

15

我更喜欢GNU sed这个任务:

要在文件开头添加空格:

sed '1s/.*/ &/' file.txt

要对具有扩展名的多个文本文件执行此操作.txt,并直接对文件进行更改(即覆盖它们),请尝试:

sed -s -i '1s/.*/ &/' *.txt

在文件开头添加一个空行:

sed '1i\\' file.txt

要对具有扩展名的多个文本文件执行此操作.txt,并直接对文件进行更改(即覆盖它们),请尝试:

sed -s -i '1i\\' *.txt
于 2012-09-30T04:48:21.953 回答
5

这将在数​​据文件的开头为您提供一个空白区域:

 awk 'BEGIN{printf(" ")}1' data.txt

或者,这将在数据文件的开头为您提供一个空白行。

 awk 'BEGIN{print""}1' data.txt
于 2012-09-30T04:26:55.957 回答
3

不需要awk

echo -n ' ' | cat - file
于 2012-09-30T04:31:21.810 回答
1

这应该工作 -

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
于 2012-09-30T04:24:38.220 回答
0

用 perl 内联:

perl -i -ne 'if(eof){$.=0;}if($.==1){print "\n";}print' temp temp2

temp 和 temp2 是两个不同的文件。执行此命令后,每个文件的开头都会自动添加一个空行。

于 2012-10-01T06:56:26.550 回答