我有这个文件:
this is line 1 192.168.1.1
this is line 2 192.168.1.2
this is line 3 192.168.1.2
this is line 4 192.168.1.1
this is line 5 192.168.1.2
我想在bash脚本中获取所有包含标签“192.168.1.1”的行(带标签)。通过这种方式,我会得到:
this is line 1 192.168.1.1
this is line 4 192.168.1.1
但我不想要这个结果:
this is line 1 192.168.1.1 this is line 4 192.168.1.1
我用sed尝试了但没有成功:
var='192.168.1.1'
body=`sed -n -e '/$var/p' $file`
echo $body
事先谢谢!
答案 0 :(得分:1)
awk
救援!
$ awk -v var='192.168.1.1' '$NF==var' file
this is line 1 192.168.1.1
this is line 4 192.168.1.1
答案 1 :(得分:0)
关注sed
可能对您有帮助。
var="your_ip"
sed -n "/$var/p" Input_file
或者awk
以下内容对此有帮助。
var="your_ip"
awk -v var="$var" 'var==$NF' Input_file
答案 2 :(得分:0)
一个简单的grep
命令可以做到这一点:
grep 192.168.1.1 filename
或者更复杂的“grep
命令可以执行此操作并将其写入另一个文件:
grep 192.168.1.1 filename > new_filename
希望这有帮助!
答案 3 :(得分:0)
假设数据格式的定义如你所说:
"this is line <seq> <ip>"
你可以做到这一点:
cat file | egrep "192.168.0.1$"