我想用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
答案 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