regex - Linux 从命令行查找和替换

标签 regex linux sed command-line

我正在寻找一个 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/

相关文章:

JavaScript RegEx 到 CamelCase 连字符的 CSS 属性

linux - 如何在 Linux 中使用命令 'ps' 获取给定进程 ID 的特定进程的信息

bash - sed:如何删除匹配特定字符串的整行?

c++ - 使用正则表达式和 sed 命令替换 C++ 代码中的 ' *' 指针不起作用

regex - 尝试匹配字符串并将其添加到替换中

python - 从 pandas 的 JSON 列中提取属于特定键的值

Javascript 正则表达式返回 # 字符,即使它没有被捕获

linux - 将 GPIO 状态从一台 Linux 机器传送到另一台机器的最佳方式是什么

linux - 将内核空间中的全局变量指针映射到用户空间?

Bash 如何将单词附加到行尾?