Noh*_*sib 28 unix shell awk sed
如何sed在模式之前和行号之后使用行插入文件?以及如何在shell脚本中使用相同的内容?
这会在每行前面插入一行代码:
sed '/Sysadmin/i \ Linux Scripting' filename.txt
Run Code Online (Sandbox Code Playgroud)
这会使用行号范围更改此值:
sed '1,$ s/A/a/'
Run Code Online (Sandbox Code Playgroud)
那么现在如何使用这些(我不能)sed在模式之前和行号或其他方法之后使用行插入文件?
Jon*_*ler 26
您可以编写sed脚本文件并使用:
sed -f sed.script file1 ...
Run Code Online (Sandbox Code Playgroud)
或者您可以使用(多个)-e 'command'选项:
sed -e '/SysAdmin/i\
Linux Scripting' -e '1,$s/A/a/' file1 ...
Run Code Online (Sandbox Code Playgroud)
如果你想在一行之后追加一些东西,那么:
sed -e '234a\
Text to insert after line 234' file1 ...
Run Code Online (Sandbox Code Playgroud)
我假设您只想在当前行号大于某个值时插入模式前的行(即如果模式出现在行号之前,则不执行任何操作)
如果你不依赖于sed:
awk -v lineno=$line -v patt="$pattern" -v text="$line_to_insert" '
NR > lineno && $0 ~ patt {print text}
{print}
' input > output
Run Code Online (Sandbox Code Playgroud)