我试图从名为changesfile的文件中正确地将参数传递给sed但我没有成功。它可能是文件更改文件的内容或我使用for循环的方式。我不确定。
我使用的命令:
cat changesfile | while read i ; do sed -e "s/$i//g" "filename" ; done
cat changesfile | while read i ; do sed -i "s/$i//g" "filename" ; done
cat changesfile | while read i ; do sed -e '/$i/d' filename ; done
cat changesfile | while read i ; do sed -e '/"$i"/d' filename ; done
我需要匹配文件中的某些行与大量的元字符。我试图匹配和删除的东西如下:
fileattribute[hostname.stile.tib.area2]=Disk /var;default_queue;area-unix
fileattribute[hostname.stoop.trb.area]=Disk /tmp;default_queue;area-unix
以下是包含通配符和转义字符的changesfile内容,以便将信息正确传递给sed,如下所示:
.*hostname\.stoop\.trb\.area.*Disk.*\/tmp.*area\-unix$
.*hostname\.stile\.tib\.area2.*Disk.*\/var.*area\-unix$
到目前为止,没有任何工作。有些命令会删除正则表达式以及其他内容。不知道为什么。任何建议都非常感谢。我工作场所的任何人都没有帮助。
答案 0 :(得分:0)
尝试以下
#!/bin/bash
sed -i -r -f changesfile filename
<强>解释强>
-r
- 在脚本中使用扩展正则表达式。无需逃避特殊字符。-f
- 将script-file的内容添加到要执行的命令中。