[英]remove “empty” lines from a text file shell script
我有一組輸出文件,其中一些如下:
133 0.00295 nurse merit respect muslim
134 0.00292 high dangerous reassure full
135 0.00048
136 0.0039 experience darren
137 0.00097 _ _param_ui_control_scripts_save _param_pattern_value
138 0.00292 find director
我想獲取以下文件:
133 0.00295 nurse merit respect muslim
134 0.00292 high dangerous reassure full
136 0.0039 experience darren
137 0.00097 _ _param_ui_control_scripts_save _param_pattern_value
138 0.00292 find director
如果第二行之后沒有任何內容,則只想刪除該行。 我對shell腳本還很陌生,我該怎么做呢?
可能是此命令的修改? sed '/^$/d'
如果列之間用空格隔開,那么如何檢查行中是否有兩個以上字段呢? 由於NF
存儲此值,因此您可以簡單地說:
awk 'NF>2' file
對於給定的輸入,它返回:
133 0.00295 nurse merit respect muslim
134 0.00292 high dangerous reassure full
136 0.0039 experience darren
137 0.00097 _ _param_ui_control_scripts_save _param_pattern_value
138 0.00292 find director
只是為了好玩,我在開始使用OP時使用了sed
,並保持了解決方案格式的詳細,以防在選擇要刪除的行時日志文件的確切布局起作用。 正則表達式在這里查找行的開頭,后跟0個或多個數字,后跟一個空格,然后是零個或多個數字,然后是一個文字周期,后跟零個或多個數字,零個或多個空格,然后是結尾行並將其刪除。
sed '/^[0-9]* [0-9]*\.[0-9]* *$/d' x.log > x_modded.log
有趣的是,在Ubuntu上的bash版本上,我無法使用\\ d的縮寫來表示數字,而不能使用加號來表示一個或多個數字。 看起來是時候進行一些更新了。 :-/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.