假设我有以下句子:
jack and jill
climbs up a hill
Run Code Online (Sandbox Code Playgroud)
我想hill在文件中搜索并替换jill为jerry,即它上面的行,同时hill保持原样.是否可以使用vim编辑器或awk/sed?
使用GNU sed:
sed 'N;/\n.*hill/s/jill\(.*[^\n]\)/jerry\1/' file
Run Code Online (Sandbox Code Playgroud)
N:将下一行附加到模式空间/\n.*hill/:如果hill在新行之后找到s/jill\(.*[^\n]\)/:jill在新行之前替换找到并跟踪捕获的字符jerry\1:使用jerry字符串后跟捕获的字符编辑该文件的地方,尝试-i标志:
sed -i 'N;/\n.*hill/s/jill\(.*[^\n]\)/jerry\1/' file
Run Code Online (Sandbox Code Playgroud)