我正在尝试学习sed,但我遇到了一个问题。让我解释一下,我有一个名为的文件:
code..
ARRAY=(anystring);
code..
其中anystring意味着可以存在我想要的代码,因为它只是一个例子。现在有了sed我想删除“ARRAY = ...;”
这一行我尝试过:
sed "/#ARRAY=.*;/d" in > out
但是没有成功,同时:
sed "/ARRAY=[a-z]*;/d" in > out
对我来说工作正常。问题是在“ARRAY =”之后可能存在所有字符(显然除外)。
我该怎么做?
答案 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