Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从文本文件外壳脚本中删除“空”行_Linux_Shell_Text Processing_Blank Line - Fatal编程技术网

Linux 从文本文件外壳脚本中删除“空”行

Linux 从文本文件外壳脚本中删除“空”行,linux,shell,text-processing,blank-line,Linux,Shell,Text Processing,Blank Line,我有一组输出文件,其中一些文件如下: 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 
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

如果列是空格分隔的,那么检查行是否有两个以上的字段呢?由于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

只是为了好玩,我使用sed作为OP的开始,并保留了详细的解决方案格式,以防在选择要删除的行时,日志文件的精确布局可能发挥作用。在这里,正则表达式查找行的开头,后跟0个或多个数字,后跟一个空格,后跟0个或多个数字,后跟一个文字周期,后跟0个或多个数字,零个或多个空格,然后是行的结尾,并将其删除

sed '/^[0-9]* [0-9]*\.[0-9]* *$/d' x.log > x_modded.log

有趣的是,在我的Ubuntu版本bash上,我无法使用\d来表示数字,而加号表示一个或多个数字。看来是时候做一些更新了-/

只是为了好玩,我使用sed作为OP的开始,并保留了详细的解决方案格式,以防在选择要删除的行时,日志文件的精确布局可能发挥作用。在这里,正则表达式查找行的开头,后跟0个或多个数字,后跟一个空格,后跟0个或多个数字,后跟一个文字周期,后跟0个或多个数字,零个或多个空格,然后是行的结尾,并将其删除

sed '/^[0-9]* [0-9]*\.[0-9]* *$/d' x.log > x_modded.log
有趣的是,在我的Ubuntu版本bash上,我无法使用\d来表示数字,而加号表示一个或多个数字。看来是时候做一些更新了-/