sed不会取代文字

时间:2014-12-25 13:20:15

标签: shell sed

我有这个文本文件(wget.log):

1400K .......... .......... .......... .......... ..........  5% 78.5K 4m10s
  1450K .......... .......... .......... .......... ..........  5% 46.6K 4m19s
  1500K .......... .......... .......... .......... ..........  5%  105K 4m17s
  1550K .......... .......... .......... .......... ..........  6% 63.0K 4m21s
  1600K ..........

因为我只想替换最后3行中的..........。我试过这个命令:

tail -n 3 /www/wget.log | sed 's/. /=>/g'

但它不会取代任何东西。我希望输出像这样:

1500K => 5%  105K 4m17s
1550K => 5%  105K 4m17s
1600K =>

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用:

tail -n 3 /www/wget.log | sed -r 's/(\.+ *)+/=> /'
1500K => 5%  105K 4m17s
1550K => 6% 63=> 0K 4m21s
1600K =>

在OSX上使用:

tail -n 3 /www/wget.log | sed -E 's/(\.+ *)+/=> /'

答案 1 :(得分:1)

您可以尝试以下sed命令。

$ tail -n 3 /www/wget.log | sed 's/ \..*\.\( \|$\)/ => /g'
  1500K =>  5%  105K 4m17s
  1550K =>  6% 63.0K 4m21s
  1600K =>