我需要在shell中使用sed
来在文件中执行以下操作:
1)假设我有一条线:
#listen_tcp = 1
我想删除第一个字符#
2)假设我有一条线:
#listen_tcp = 1
我想更改为上一个字符1
到0
3)假设我有一条线:
#listen_tcp
我想将其附加到#listen_tcp = 1
4)假设我有一条线:
libvirtd_opts="-d"
我想在libvirtd_opts="-d -l"
5)假设我有一条线:
tcp_port = "16059"
我只想将其更改为tcp_port = "16509"
如何使用sed
在文本文件中执行所有操作?我只知道如何用整行来重新表达它。例如,我将打开文件并记住单词行,然后使用sed s/a/b/g
将b替换为a。这是我最好的知识,我想知道是否有更好的方法来实现这一目标?例如,按关键字搜索该行并替换此行的一部分?
答案 0 :(得分:1)
1)
echo "#listen_tcp = 1" | sed '/listen/s/#//g'
listen_tcp = 1
2)
echo "#listen_tcp = 1" | sed '/listen/s/1/0/g'
#listen_tcp = 0
3)
echo "#listen_tcp" | sed 's/#listen_tcp/& = 1/g'
#listen_tcp = 1
For 4)
echo 'libvirtd_opts="-d"' | sed 's/libvirtd_opts="-d/& -l/g'
libvirtd_opts="-d -l"
对于5)
echo 'tcp_port = "16059"' | sed '/tcp_port/s/16059/16509/g'
tcp_port = "16509"