簡體   English   中英

從文本文件外殼腳本中刪除“空”行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM