我正在使用sed
来查找和替换文档中的某些项目:
sed -i "0,\/^$a/s//$b/" ./file
这用于替换单词,例如:将“lion”替换为“animal”。
I saw the lions at the zoo.
这改为:
I saw the animals at the zoo.
在文档中,文本中混合了一些组件,我希望sed
完全忽略。这些采用\macro{text}
的形式,例如:
I saw the li\footnote{Hello.}ons at the zoo.
由于区域\footnote{Hello.}
仍然必须更改为:
I saw the animals at the zoo.
这些都以\
开头,以}
结尾,但绝不会使用多个}
,也不会使用其他\
或}
。用于文件中的其他位置。
sed
忽略这些?答案 0 :(得分:2)
这可能对您有用:
echo "I saw the li\footnote{Hello.}ons at the zoo." |
sed 'h;s/\\[^}]*}//g;/'"$a"'/!{g;b};s//'"$b"'/g;'
$a
不存在,则会返回原始行,否则会将$a
替换为$b
N.B。假设没有带有混合宏的行