使用sed

时间:2016-01-15 14:12:20

标签: text awk sed scripting newline

我想用sed在数据文件的顶部添加一个新行,然后写一些内容到该行。

我按照How to add a blank line before the first line in a text file with awk中的建议尝试了这个:

sed '1i\ \' ./filename.txt

但它在文件第一行的开头打印了一个反斜杠,而不是创建一个新行。如果我尝试将所有内容放在同一行上,终端也会抛出错误(" 1i \":在i命令结尾处\后的额外字符)。

输入:

1 2 3 4 
1 2 3 4 
1 2 3 4 

预期输出

14
1 2 3 4 
1 2 3 4 
1 2 3 4 

2 个答案:

答案 0 :(得分:2)

基本上你是连接两个文件。包含一行和原始文件的文件。根据它的名称,这是cat的任务:

cat - file <<< 'new line'
# or 
echo 'new line' | cat - file

-代表 stdin

如果你的shell支持这个,你也可以使用cat和命令替换:

cat <(echo 'new line') file

顺便说一句,sed应该只是:

sed '1i\new line' file

答案 1 :(得分:2)

$ sed '1i\14' file
14
1 2 3 4
1 2 3 4
1 2 3 4

但是为了清晰,简单,可扩展性,健壮性,可移植性以及软件的所有其他理想属性,只需使用awk:

$ awk 'NR==1{print "14"} {print}' file
14
1 2 3 4
1 2 3 4
1 2 3 4