我正在寻找一个 linux 命令行脚本来执行以下操作。
假设我有一个文件
ABC|1|READ11|Reading|1
ABj|2|READ11|Reading|2
CBD|3|WRIT11|Reading|3
BCD|4|READ11|Reading|4
CDE|5|WRIT11|Reading|5
CBA|6|READ11|Reading|6
对于以字母“C”开头的每一行,如果它有“WRIT11”,则替换为“REPL11”
脚本后的文件
ABC|1|READ11|Reading|1
ABj|2|READ11|Reading|2
CBD|3|REPL11|Reading|3
BCD|4|READ11|Reading|4
CDE|5|REPL11|Reading|5
CBA|6|READ11|Reading|6
最佳答案
可以这样做:
sed 's/\(^C.*\)WRIT11/\1REPL11/g' your_file
解释:
s/search_this/replace_it_with_this/g
s开头的是搜索,最后的g是全局的,不是一行而已。
在search_this部分,\(
and \)
中的部分在replace_it_with_this部分可以写成\1
。
^C
表示行首有一个 C,后面的 .
表示任意字符,*
表示前导字符可以完全不出现或出现多次。
关于regex - Linux 从命令行查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472695/