繁体   English   中英

如何使用sed在linux中删除不以数字开头且左侧没有空格的文件中的行

[英]How to delete the lines in a file not starting with numbers and have no space to the left in linux using sed

我有一个如下的输入文件:

       48819  5.05780805e+00  1.98145833e+00  1.68575829e+02
       48815  6.06856107e+00  1.98165597e+00  1.68575500e+02
*KEYWORD
$TIME_VALUE =  5.0000443e+00
$STATE_NO = 52
$Output for State 52 at time = 5.00004
*NODE
       48027  4.84536486e+01  6.01658273e+00  1.49520029e+02
       48028  4.85477927e+01  5.02370845e+00  1.49519394e+02

我必须删除所有以非数字数据开头的行。 请注意,数据之间用空格分隔,带有特殊字符的文本从位置1开始,因此该行中该文本之前没有空格。

有建议使用sed -i选项吗?

我会用:

$ sed -n '/^\s*[0-9]/p' file
       48819  5.05780805e+00  1.98145833e+00  1.68575829e+02
       48815  6.06856107e+00  1.98165597e+00  1.68575500e+02
       48027  4.84536486e+01  6.01658273e+00  1.49520029e+02
       48028  4.85477927e+01  5.02370845e+00  1.49519394e+02

这使用-n来“抑制模式空间的自动打印”,因此我们仅打印所需的行。 在这种情况下,请以0或多个空格开头,后跟一个数字。

要使用sed -i ,您可以说sed -n -i.bak ...以便进行就地替换,并保留file.bak文件作为备份。

sed

sed -rn '/^[[:space:]]+[0-9]/p' File

仅打印以一个或多个空格/制表符开头的行,然后是一个数字。

对于就地更改:

sed -rni '/^[[:space:]]+[0-9]/p' File

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM