![](/img/trans.png)
[英]Linux: How to delete lines starting at a pattern to another pattern using sed
[英]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.