我正在寻找一个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/g
s开头是搜索,结尾的g表示全局,而不仅仅是一行。在搜索此部分时,
\(
和\)
中的部分可以在替换为此部分中写成\1
。^C
表示行的开头有一个C,后面的.
表示任何字符,*
表示前一个字符不能出现或出现多次。关于regex - Linux从命令行查找并替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40472695/