我有一个需要通过 shell 脚本修改的文件。
需要做到以下几点: 1. 在文件中搜索关键字。2. 用我提供的行文本替换此关键字的下一行。
例如,我的文件有以下文本:
(一些文本) (一些文本) (text_to_search) (text_to_replace) (一些文本) (一些文本) (一些文本)
我需要搜索文件并重写文件替换行,使剩余内容保持不变。
如何才能做到这一点?
问候
awk ' zap==1 {print "my new line goes here"; zap=0; next}
/my pattern/ {zap=1; print $0; next}
{print $0} ' infile > newfile
假设我得到了你想要的......
var="this is the line of text to insert"
awk -v lin="$var" ' zap==1 {print lin ; zap=0; next}
/my pattern/ {zap=1; print $0; next}
{print $0} ' infile > newfile
awk 内部变量lin
,定义:-v lin="$var"
被命名lin
,lin
来自外部 bash 变量var
。
sed -i '/pattern/r/dev/stdin' file
脚本将等待我们输入换行符并交互地按 ctrl +d +
cat file
first
second
third
fourth
fiveth
set var = "inserted"
sed '/second/a\'$var file
first
second
inserted
third
fourth
fiveth