2010-07-14 2 views
1

Как вырезать слова перед первым словом «END» в строке и не включать первый символ перед словом «END» (в наших примерах символ - - «)sed + вырезать слова перед первым словом «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
sed "s/.END.*//" 

Это должно сделать трюк.

Он удалит первый символ до конца и все символы после (и, конечно же, END).

0

если ваша строка структура всегда есть дефис, а затем "END" слово (например, -End),

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

Как вы можете видеть, в случае, если есть слова типа «ОТПРАВИТЬ», он все равно даст вам правильный результат.

, если вы по-прежнему предпочитают использовать СЕПГ,

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

это похоже на работу: awkish не sedish, & буквальным

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

Смежные вопросы