我有一个包含超过14000条记录的文件。 我想要做的是逐行处理这个文件,并用grep命令返回的anodher字符串替换一个String。 例如: 行:
/xxxxx/xxxxx/Class.java:67: Logger.w(TAG, "message");
我的grep命令获取 Class.java 字符串是(Class.java是juste的一个例子):
grep -o '[a-zA-Z]*"*\.java"*'
对于每一行,我必须用 class.java 字符串替换 TAG 字符串由grep命令返回
答案 0 :(得分:1)
这是sed的用武之地:
sed -i 's/TAG/class.java/g' Class.java
对当前目录中的所有java文件执行此操作(假设此处为bash):
sed -i 's/TAG/class.java/g' *.java
-i
表示就地,因此替换发生在文件中并立即保存。对于其他人,我建议你谷歌关于sed。
答案 1 :(得分:1)
您可以使用sed
并执行以下操作:
sed -r 's#(.*)/(.*)\.java(.*)(TAG)#\1\/\2\3\2#g'
括号内的字符是 groups ,您可以在第二部分中使用它们来获取其内容。
为了就地修改文件,你应该:
sed -ir 's#(.*)/(.*)\.java(.*)(TAG)#\1\/\2\3\2#g' your_file.txt
答案 2 :(得分:0)
您可以使用:
grep -rl 'old_string' ./ | xargs sed -i 's/old_string/Relacement_String/g'