从文本文件搜索和替换字符串 Ubuntu
Search and Replace String from text file Ubuntu
我必须替换以下字符串
//@Config(manifest
使用以下字符串,
@Config(manifest
所以我按照正则表达式创建了这个
\/\/@Config\(manifest
并尝试了
grep -rl \/\/@Config\(manifest . | xargs sed -i "\/\/@Config\(manifest@Config\(manifest/g"
但我收到以下错误:
sed: -e expression #1, char 38: Unmatched ( or \(
我必须递归搜索并执行此操作,尽管我遇到了上述错误。
grep -rl '//@Config(manifest' | xargs sed -i 's|//@Config(manifest|@Config(manifest|g'
- 为当前目录指定
.
对于 grep -r
是可选的
sed
允许 反斜杠或换行符 以外的任何字符用作分隔符
编辑
如果文件名包含空格,使用
grep -rlZ '//@Config(manifest' | xargs -0 sed -i 's|//@Config(manifest|@Config(manifest|g'
说明(假定命令为 GNU 版本)
grep
-r
执行递归搜索
-l
选项只输出文件名而不是匹配的模式
-Z
在每个文件名后输出一个 零字节 (ASCII NUL 字符)而不是通常的换行符
'pattern'
默认情况下,grep 使用 BRE(基本正则表达式),其中像 (
这样的字符没有特殊含义,因此不需要转义
xargs -0
告诉 xargs
通过 ASCII NUL 字符分隔参数
sed
-i
就地编辑,如果要创建原始文件的备份,请使用-i.bkp
s|pattern|replace|g
g
标志告诉 sed
搜索并替换所有出现的地方。 sed
也默认为 BRE,因此无需转义 (
。使用 \(
将意味着捕获组的开始,因此当它找不到结束时的错误 \)
我必须替换以下字符串
//@Config(manifest
使用以下字符串,
@Config(manifest
所以我按照正则表达式创建了这个
\/\/@Config\(manifest
并尝试了
grep -rl \/\/@Config\(manifest . | xargs sed -i "\/\/@Config\(manifest@Config\(manifest/g"
但我收到以下错误:
sed: -e expression #1, char 38: Unmatched ( or \(
我必须递归搜索并执行此操作,尽管我遇到了上述错误。
grep -rl '//@Config(manifest' | xargs sed -i 's|//@Config(manifest|@Config(manifest|g'
- 为当前目录指定
.
对于grep -r
是可选的
sed
允许 反斜杠或换行符 以外的任何字符用作分隔符
编辑
如果文件名包含空格,使用
grep -rlZ '//@Config(manifest' | xargs -0 sed -i 's|//@Config(manifest|@Config(manifest|g'
说明(假定命令为 GNU 版本)
grep
-r
执行递归搜索-l
选项只输出文件名而不是匹配的模式-Z
在每个文件名后输出一个 零字节 (ASCII NUL 字符)而不是通常的换行符'pattern'
默认情况下,grep 使用 BRE(基本正则表达式),其中像(
这样的字符没有特殊含义,因此不需要转义
xargs -0
告诉xargs
通过 ASCII NUL 字符分隔参数sed
-i
就地编辑,如果要创建原始文件的备份,请使用-i.bkp
s|pattern|replace|g
g
标志告诉sed
搜索并替换所有出现的地方。sed
也默认为 BRE,因此无需转义(
。使用\(
将意味着捕获组的开始,因此当它找不到结束时的错误\)