linux - 替换文件中的行

标签 linux bash shell unix sed

<分区>

如何替换文件中以文本 aaa 开头的行我不知道该行在哪里。

文件.txt:

sadasd_dsada = (aa,bb,cc)
aaa = (aa,bb,cc)
sadasd_dsada = (aa,bb,cc)

替换:

aaa = (aa,bb,cc)

对于:

aaa = (dd,ee,ff)

最佳答案

最简单的方法是使用 sed 进行替换:

$ sed 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)
sadasd_dsada = (aa,bb,cc)

字符 ^$ 分别匹配正则表达式中行的开头和结尾,这意味着替换只会发生在整行匹配中。

一旦您对更改感到满意,请使用 -i 选项保存回文件。

$  sed -i 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file

编辑:

$ cat file
sadasd_dsada = (aa,bb,cc)
aaa = (aa,bb,cc)
aaa = foo
sadasd_dsada = (aa,bb,cc)
aaa = bar

$ sed 's/^aaa = .*/aaa = (dd,ee,ff)/' file
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)
aaa = (dd,ee,ff)
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)

关于linux - 替换文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161365/

相关文章:

linux - 未找到命令 - 脚本编写腻子错误?

linux - 浏览器通过ip更改域名,Debian,Apache2

c++ - 为了实现 5 个并发连接的高性能低级 Linux TCP/IP 套接字客户端,我必须采取哪些可能的选择?

linux - 如何对行进行多次排序?

shell - vimdiff 与交互式 shell

正则表达式匹配引号之间的字符串

linux - 在 Linux 中分析部分程序

linux - ARM 汇编时间系统调用意外值

linux - Bash管道消费顺序

linux - Bash 脚本 : Skipping files and grep