我想将一个字符串附加到文本文件第二行的开头,例如:
1
2
3
应该变成:
1
42
3
关于如何处理这件事有什么想法吗?
答案1
你可以使用 sed 来完成此操作,如果你有 GNU sed,你可以使用-i
它来修改它,如下所示
sed -i -e '2s/^/4/' source
这将指示sed
修改就地 ( -i
) 并执行正则表达式替换 ( s/^/4/
) 以将行 () 的开头^
与 a匹配4
,并且仅在行号上执行此操作2
。所有这些都是在名为的文件上完成的source
答案2
POSIX一:
printf '\n4' | paste -d'\0' - file
答案3
您可以在 Ex 模式下使用 Vim:
ex -sc '2s/^/4/|x' file
2
选择第二行s
代替x
保存并关闭
答案4
强制awk
解决方案:
awk -v prepend="<your-text-here>" 'NR==2{print prepend $0;next};1' file
或者提出的环境变量解决方案@cuonglm的评论:
prepend="<your-text-here>" awk 'NR==2{print ENVIRON["prepend"] $0;next};1' file
-v prepend=...
为调用中的变量分配awk
指定prepend
的值。NR==2
对第二行应用以下命令。print prepend $0
添加到该行之前,请记住next
跳到下一行。- 最后一个
1
是 的快捷方式{print $0}
,即打印整行。