0

我试图从名为 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

以下是包含通配符和转义字符以正确将信息传递给 sed 的更改文件的内容如下:

.*hostname\.stoop\.trb\.area.*Disk.*\/tmp.*area\-unix$
.*hostname\.stile\.tib\.area2.*Disk.*\/var.*area\-unix$

到目前为止,没有任何工作。一些命令删除了正则表达式和其他东西。不知道为什么。非常感谢任何建议。我的工作场所还​​没有任何人提供帮助。

4

1 回答 1

0

尝试以下

#!/bin/bash
sed -i -r -f changesfile filename

解释

  1. -r- 在脚本中使用扩展的正则表达式。无需转义特殊字符。
  2. -f- 将脚本文件的内容添加到要执行的命令中。
于 2013-01-24T04:45:52.170 回答