我有一个脚本文件,我需要用另一个脚本修改,在第8行插入一个文本。
要插入的字符串:Project_Name=sowstest,到一个名为start的文件中。
我尝试使用awk和sed,但我的命令变得混乱。
我有一个脚本文件,我需要用另一个脚本修改,在第8行插入一个文本。
要插入的字符串:Project_Name=sowstest,到一个名为start的文件中。
我尝试使用awk和sed,但我的命令变得混乱。
当前回答
awk的答案
awk -v n=8 -v s="Project_Name=sowstest" 'NR == n {print s} {print}' file > file.new
其他回答
sed -i '8i This is Line 8' FILE
在第8行插入
This is Line 8
进入文件
-i直接修改文件file,不输出到stdout,正如glenn jackman在注释中提到的那样。
awk的答案
awk -v n=8 -v s="Project_Name=sowstest" 'NR == n {print s} {print}' file > file.new
一个成功的答案
ed file << END
8i
Project_Name=sowstest
.
w
q
END
. 在它自己的行结束输入模式;w写道;q退出。GNU ed有一个wq命令来保存和退出,但旧ed没有。
进一步阅读:https://gnu.org/software/ed/manual/ed_manual.html
OS X / macOS / FreeBSD sed
-i标志在macOS sed和GNU sed上的工作方式不同。
下面是在macOS / OS X上使用它的方法:
sed -i '' '8i\
8 This is Line 8' FILE
更多信息见男子1 sed。
在Linux中添加2行可以很好地工作。
sed '2s/$/ myalias/' file