在文件中查找一行,并在bash中添加一行到行尾

Jos*_*osh 4 linux bash file-io sed

如何识别具有特殊模式的行开头并在行尾添加一些内容?

如果尚未附加应添加的模式

假设我想通过开头的模式在主机文件中找到一个特定的行,可能是ip-address,也可能是行上方的注释

一个例子可能是:

#This is your hosts file

127.0.0.1 localhost linux 

#This is added automatically 

192.168.1.2 domain1. com 

#this is added automatically to 

192.168.1.2 sub.domain1.com www.domain1.com
Run Code Online (Sandbox Code Playgroud)

当你找到我告诉你的IP时,我如何告诉bash.去结束并添加一些东西

或其他情况

当bash找到评论时 #This is added automatically

往下走2,然后到最后一行添加一些东西

你看我是初学者,并且没有任何想法在这里使用什么以及如何使用.是由sed解决?或者这可以用grep完成吗?我必须学习AWK吗?

iam*_*ser 6

这将在行尾添加一些文本,格式为"127.0.0.1".

grep -F "127.0.0.1" file | sed -ie 's/$/& ADDing SOME MORE TEXT AT THE END/g'
Run Code Online (Sandbox Code Playgroud)

以下将添加到以127.0.0.1sed 开头的文件中的行:

sed -ie 's/^127.0.0.1.*$/& ADDing MORE TEXT TO THE END/g' file
Run Code Online (Sandbox Code Playgroud)

要做同样的事情,你也可以使用awk:

awk '/^127.0.0.1/{print $0,"ADD MORE TEXT"}' file > newfile && mv newfile file
Run Code Online (Sandbox Code Playgroud)
  • 编辑

如果要通过变量调用IP地址,则语法可能略有不同:

var="127.0.0.1"
grep -F "$var" file | sed -ie 's/$/& ADD MORE TEXT/g'
sed -ie "s/^$var.*$/& ADD MORE TEXT/g" file
awk '/^'$var'/{print $0,"ADD MORE TEXT"}' file > newfile && mv newfile file
Run Code Online (Sandbox Code Playgroud)