
因此,我對使用 shell(特別是 bash)相當陌生,我正在編寫一個腳本,該腳本會將包含 DNA 序列的檔案轉換為更有用的格式。不幸的是,其中許多文件將包含用於標記資訊等的無關行。我發現使用以下命令刪除帶空格的行相當簡單
sed '/ /d' infile
我想刪除包含數字的行將是使用正規表示式的類似策略。我只是還沒有真正找到任何方法來處理 sed 中的特殊字元。
謝謝
答案1
要刪除任何不完全由字母字元組成的行,您需要新增開始 ( ^
) 和結束 ( $
) 錨點
sed '/^[[:alpha:]]*$/!d' file
相反,您可以刪除至少包含一個非字母字元的任何行
sed '/[^[:alpha:]]/d' file
請注意,插入符號^
在這裡充當否定運算符,而不是像前面的表達式中那樣充當錨點。
或者,使用 grep 的整行 (-x
或--line-regexp
) 選項
grep -x '[[:alpha:]]*' file
(相當於第一個 sed 表達式)或使用反向比對 ( -v
)
grep -v '[^[:alpha:]]' file
(相當於第二個 sed 表達式)。
答案2
答案取自OP評論
我想我已經弄清楚了,我只是將我的內容更改
sed
為這樣sed '/[[:alpha:]]//!d' infile
——如果邏輯遵循的話——應該排除包含除以下內容之外的任何內容的行[A-Za-z]