删除以模式

时间:2018-02-27 04:12:09

标签: shell unix scripting

我需要删除以文件中的模式开头的行的所有空格。

我不想循环播放。有没有简单快捷的解决方案?

例如 输入文件:

<id xxx>dafd</id>
<r>31,31, 31</r>
<r> 0, 0,0 </r>

输出文件需要

<id xxx>dafd</id>
<r>31,31,31</r>
<r>0,0,0</r>

2 个答案:

答案 0 :(得分:2)

喜欢这个?:

echo "<id xxx>dafd</id>
<r>31,31, 31</r>
<r> 0, 0,0 </r>" | sed -r '/<r>/s/ //g;'
<id xxx>dafd</id>
<r>31,31,31</r>
<r>0,0,0</r>

说明:

  • sed -r:使用扩展的常规表达
  • /<r>/:匹配的行
  • s/ //g;:全局替换空白。

答案 1 :(得分:2)

您好,您可以通过以下脚本来完成。首先创建一个像mytream.sh这样的文件并添加以下行并更改文件的权限并执行: -

vi mytream.sh

现在添加以下行: -

#!/bin/bash

file_to_tream="yourfilename"
sed '/<r>/s/ //g' $file_to_tream > tmp.txt
mv tmp.txt $file_to_tream 

或者如果您对任何文件执行此操作,只需更改下面的脚本并在命令提示符下提供文件名

#!/bin/bash

sed '/<r>/s/ //g' $1 > tmp.txt
mv tmp.txt $1

现在像

一样运行
chmod 777 mytream.sh
./mytream.sh yourfileName

希望这会对你有所帮助。