[英]How do I remove a line of the form ARRAY=…; with sed?
我正在嘗試學習sed,但是遇到了問題。 讓我解釋一下,我有一個文件名為:
code..
ARRAY=(anystring);
code..
其中anystring表示可以包含我想要的代碼,因為這只是示例。 現在,使用sed我想刪除“ ARRAY = ...;”行。
我嘗試過:
sed "/#ARRAY=.*;/d" in > out
但沒有成功,雖然:
sed "/ARRAY=[a-z]*;/d" in > out
對我來說很好。 問題在於“ ARRAY =“之后可以有所有字符(顯然;;除外)。
我怎樣才能做到這一點?
在第一個命令中刪除“#”字符。 sed正則表達式中的'#'字符沒有特殊含義。
嘗試這個:
sed '/^ARRAY=.*;/d' in >out
該行的開頭表示為^,而不是#。 如果您接受瑞士在評論中建議的領先空格,請使用
sed '/^[ \t]*ARRAY=.*;/d' in >out
sed "s/^ARRAY=.*;//g" <in >out
或更好sed "/^ARRAY=.*;/d" <in >out
“ s”表示替代。 因此, s/ABC/DEF/
意味着用DEF替換ABC。 “ g”表示全局,因此它將刪除所有此類行,而不僅僅是第一行。 ^
表示該行必須以ARRAY開頭
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.