如何在第一个“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
答案 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*|^$)/'