如何删除表格ARRAY = ...;用sed?

时间:2011-08-01 19:30:12

标签: regex sed

我正在尝试学习sed,但我遇到了一个问题。让我解释一下,我有一个名为的文件:

code..
ARRAY=(anystring);
code..

其中anystring意味着可以存在我想要的代码,因为它只是一个例子。现在有了sed我想删除“ARRAY = ...;”

这一行

我尝试过:

sed "/#ARRAY=.*;/d" in > out

但是没有成功,同时:

sed "/ARRAY=[a-z]*;/d" in > out

对我来说工作正常。问题是在“ARRAY =”之后可能存在所有字符(显然除外)。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

删除第一个命令中的'#'字符。 '#'字符在sed正则表达式中没有特殊含义。

答案 1 :(得分:3)

试试这个:

sed '/^ARRAY=.*;/d' in >out

该行的开头表示为^,而不是#。如果您接受领先的空白,正如瑞士在评论中所建议的那样,请使用

sed '/^[ \t]*ARRAY=.*;/d' in >out

答案 2 :(得分:1)

sed "s/^ARRAY=.*;//g" <in >out 或者更好sed "/^ARRAY=.*;/d" <in >out

“s”表示替代。所以s/ABC/DEF/表示用DEF替换ABC。 “g”表示全局,因此它将删除所有这些行,而不是仅删除第一行。 ^表示该行必须以ARRAY

开头