如何使用 shell 命令(sed 或 awk)来替换文件中的段落,如下所示:
bala bala ba1
balabala.
leave me here.
this paragraph
yes, I'm going
to be replaced
The rest contains
should not be replaced.
Run Code Online (Sandbox Code Playgroud)
更换后:
bala bala ba1
balaba.
leave me here.
New contains,
I'm replacement!
The rest contains
should not be replaced.
Run Code Online (Sandbox Code Playgroud)
我声明original包含在一个变量中$OLD,而new包含在另一个变量中$NEW。
假设您有包含新段落和旧段落的变量,如
$ echo "$old"
this paragraph
yes, I'm going
to be replaced
Run Code Online (Sandbox Code Playgroud)
和
$ echo "$new"
New contains,
I'm replacement!
Run Code Online (Sandbox Code Playgroud)
您可以将该文件(假设它名为infile)读入 Bash 变量并使用参数扩展:
$ contents=$(< infile)
$ echo "${contents/$old/$new}"
bala bala ba1
balabala.
leave me here.
New contains,
I'm replacement!
The rest contains
should not be replaced.
Run Code Online (Sandbox Code Playgroud)
要就地更改文件:
echo "${contents/$old/$new}" > infile.tmp && mv infile.tmp infile
Run Code Online (Sandbox Code Playgroud)