如何从文件BASH中剪切和覆盖某个部分

时间:2014-03-05 11:30:17

标签: bash grep

如何从文件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完成的吗?

2 个答案:

答案 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