我正在寻找一个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”开头的每一行,如果它有“write11”,则替换为“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/gs开头是搜索,结尾的g表示全局,而不仅仅是一行。
在搜索此部分时,\(\)中的部分可以在替换为此部分中写成\1
^C表示行的开头有一个C,后面的.表示任何字符,*表示前一个字符不能出现或出现多次。

关于regex - Linux从命令行查找并替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40472695/

10-11 19:14