经过一些谷歌搜索后,我发现sed命令就是我所需要的。说实话,这个命令的旗帜似乎无法理解。我想做的就是用另一个文件替换单引号的文件串。 word1,word2等不是单引号或双引号。例如:
之前:foo.txt
word1 word2 word3 'This the text that needs replacement' word4 word5
之后:foo.txt
word1 word2 word3 'I have been replaced' word4 word5
请注意文字'这是需要更换的文字'不是常数,其内容可能会有所不同。
答案 0 :(得分:1)
这会将单引号中的字符串替换为......某事。你的问题不够具体。
sed "s/'[^']*'/'something'/" file
由于在搜索表达式中使用了单引号,因此我们将整个sed
脚本放在双引号中。这意味着任何需要进行shell替换的东西(特别是反斜杠和美元符号,当然还有文字双引号)都需要在脚本表达式中进行转义。
正则表达式'[^']*'
表示单引号,后跟一个不是单引号的字符,重复零次或多次,后跟另一个单引号。换句话说,任何不是单引号的单引号。
此外,这将打印到标准输出。使用sed -i
就地修改文件,或将输出重定向到您想要的位置。
答案 1 :(得分:0)
只需用以下语法替换它:
cat foo.txt | sed -e 's/want to be/have been/g'
替换文件(例如,在mac上)
sed -i '' 's/want to be/have been/g' foo.txt
或其他unix
sed -i.bak 's/want to be/have been/g' foo.txt