regex - 使用正则表达式更改 bash 中的行

标签 regex linux bash command-line

我需要使用 Linux 命令行替换一些文本:

我有一些文件:

-------------------
line 1
line 2,2
line 3_4
-------------------

我有一个部分解决方案:

sed -i 's/line 1/my line 1/g' /my/file

这可行,但当我尝试替换第 2 行和第 3 行时,它不起作用。我得到:

-------------------
line 1
my line 2,2
my line 3_4
-------------------

我需要:

-------------------
line 1
my line 2
my line 3
-------------------

有没有一种简单的方法可以使用 reg exp 来解决这个问题?

最佳答案

您可以使用此 sed 命令:

sed 's/^ *\(line [0-9]\+\).\+$/my \1/' file
line 1
my line 2
my line 3

如果您想内联编辑此文件,请使用:

sed -i.bak 's/^ *\(line [0-9]\+\).\+$/my \1/' file

关于regex - 使用正则表达式更改 bash 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20619869/

相关文章:

c++ - 为什么所有列表都被填充

JavaScript 正则表达式用第一个字母替换单词,除非在括号内

linux - 在 Linux 服务器上安装 ZLIB

linux - NonGUIDriver com.thoughtworks.xstream.io.StreamException 中的错误

BASH 脚本期待,当我需要其他的时候

linux - 从一个目录执行 bash 脚本到另一个目录?

python - crontab、python脚本运行失败

ruby-on-rails - 正则表达式检查数字小数点分隔符是否一致

java - 如何在 TestNG.xml 文件的类路径中使用正则表达式

python - 如何使用 xmpp 注册用户