2010-07-14 20 views
1

之前的第一個「結束」單詞之前的單詞剪切如何在第一個「結束」單詞之前剪切單詞並且不包括「結束」單詞之前的第一個字符(在我們的例子中,字符是「 - 「)sed +第

只有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
sed "s/.END.*//" 

這應該做的伎倆。

它將刪除結束前的第一個字符和所有後面的字符(當然還有END本身)。

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

將是我的建議

0

如果你的字符串結構總是有連字符,然後在 「END」 字樣(如-END),

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

正如你可以看到,如果你有像「發送」這樣的詞,它仍然會給你正確的輸出。

,如果你還是喜歡使用SED,

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

這似乎工作:awkish不sedish,&文字

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