如果只有一个char,如何使用sed删除一行

时间:2014-06-18 16:25:47

标签: sed

文件模式

      90      0.38085E+06        0.70466 -0.12552 -0.69836
               19901.            0.25991  0.96148  0.08944
              -13890.            0.66023 -0.24453  0.71014
1
      91      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776
1
      92      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776

我想删除所有1的

2 个答案:

答案 0 :(得分:1)

sed '/^1$/d'可以解决问题。

^标记了行的开头,$标记了行的结尾。如果该行中唯一的内容是1,则操作为d(删除)。如果要删除任何长度为1的行,请使用.通配符而不是1

示例:

$ cat test.txt
      90      0.38085E+06        0.70466 -0.12552 -0.69836
               19901.            0.25991  0.96148  0.08944
              -13890.            0.66023 -0.24453  0.71014
1
      91      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776
1
      92      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776

$ cat test.txt | sed '/^1$/d'
      90      0.38085E+06        0.70466 -0.12552 -0.69836
               19901.            0.25991  0.96148  0.08944
              -13890.            0.66023 -0.24453  0.71014
      91      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776
      92      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776

答案 1 :(得分:-1)

使用sed文件

sed /^1/d
      90      0.38085E+06        0.70466 -0.12552 -0.69836
               19901.            0.25991  0.96148  0.08944
              -13890.            0.66023 -0.24453  0.71014
      91      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776
      92      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776

sed

不需要引用

使用awk

awk '/^1/ {next}1' file
      90      0.38085E+06        0.70466 -0.12552 -0.69836
               19901.            0.25991  0.96148  0.08944
              -13890.            0.66023 -0.24453  0.71014
      91      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776
      92      0.49423E+06       -0.66143 -0.04438  0.74870
               40374.           -0.15942  0.98375 -0.08253
              -25506.            0.73287  0.17395  0.65776

这实际上会执行OP要求的操作,删除1

sed s/1//g
      90      0.38085E+06        0.70466 -0.2552 -0.69836
               990.            0.2599  0.9648  0.08944
              -3890.            0.66023 -0.24453  0.704

      9      0.49423E+06       -0.6643 -0.04438  0.74870
               40374.           -0.5942  0.98375 -0.08253
              -25506.            0.73287  0.7395  0.65776

      92      0.49423E+06       -0.6643 -0.04438  0.74870
               40374.           -0.5942  0.98375 -0.08253
              -25506.            0.73287  0.7395  0.65776