繁体   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