如何从文件BASH中删除和覆盖某个部分
dl.txt中的内容:“127。www.example.com”
我试过了:
#cat dl.txt|egrep -v "^[0-9]+.[ ]" > dl.txt
#cat dl.txt|egrep "www.example.com" > dl.txt
这可能是用awk完成的吗?
答案 0 :(得分:0)
下面应该删除网址之前的127.或任何IP地址:
sed -i 's/[0-9]\+\.\?\s*//g' dl.txt
答案 1 :(得分:0)
如果您想要更改文件dl.txt
的内容并删除“127”,则可以使用sed:
sed -i.bak 's/127. //' dl.txt
然后您会看到dl.txt
已更改且dl.txt.bak
是备份副本。
同样,如果您想删除“www.example.com”
sed -i.bak 's/www.example.com//' dl.txt
或者,如果您想要删除所有内容,并在每行上包含空格:
sed -i.bak 's/.* //' dl.txt
或者使用awk:
awk '{print $1}' dl.txt
127.
awk '{print $2}' dl.txt
www.example.com
或者你可以使用这样的awk几乎就地执行此操作,只有在awk成功时才覆盖原始文件:
awk '{print $2}' dl.txt > $$.tmp && mv $$.tmp dl.txt