sed +在第一个“END”字之前剪切单词

时间:2010-07-14 11:11:05

标签: sed

如何在第一个“END”字之前剪切单词,而不包括“END”字之前的第一个字符(在我们的例子中,字符是“ - ”)

仅使用sed命令

例如:

  echo AAA-BBB-CCC-END | sed ...
  AAA-BBB-CCC


  echo 1-END-3-4 | sed ...
  1     


  echo 1-2-END-3-4 | sed ...
  1-2


  echo PARAM1-PARAM2-END | sed ...
  PARAM1-PARAM2


  echo fileExample1-fileExample2-END | sed ...
  fileExample1-fileExample2


  echo xyz_123-END | sed ...
  xyz_123

4 个答案:

答案 0 :(得分:4)

sed "s/.END.*//"

这应该可以解决问题。

它将删除END之前的第一个字符,以及之后的所有字符(当然还有END本身)。

答案 1 :(得分:0)

sed -r "s/(.*).END.*/\1/"

将是我的建议

答案 2 :(得分:0)

如果你的字符串结构总是有连字符,然后是“END”字(例如-END),

$ var="AAA-BBB-CCC-SEND-END"
$ echo ${var%%-END*}
AAA-BBB-CCC-SEND

正如您所看到的,如果您有“SEND”之类的字词,它仍会为您提供正确的输出。

如果您仍然喜欢使用sed,

$ echo $var | sed 's/-END.*//'
AAA-BBB-CCC-SEND

答案 3 :(得分:0)

这似乎有效:笨拙而不是狡猾,&字面

awk '$0 !~ /(echo*|^$)/'