2013-04-19 5 views
0

У меня есть файл сказать, ABC, содержащие записи, как:Cut первого появления рисунка из строки

$cat xyz 
    ABC 
    ABCABC 
    ABCABCABC 

Я хочу, чтобы вырезать первый рисунок так результат должен быть как:

AC 
ACABC 
ACABCABC 

Я пытаюсь сократить образец используя awk как:

$ cat xyz|awk -F 'B' '{print $1,$2}' 
A CA 
A CA 
A CA 

Конечно, B - разделитель, поэтому я получаю результат выше. Как я могу это сделать? Спасибо

ответ

2

Я понимаю, что вы хотите удалить сначала B в каждой строке. Если да, то это будет работать:

sed 's/B//' xyx 

Выход:

AC 
ACABC 
ACABCABC 

Если вы хотите, чтобы файл, который нужно заменить, добавить -i

sed -i 's/B//' xyx 

Я вижу вас tried to edit my answer to add a new question - примечание что вы должны сделать это, обновив свой ответ или напишите в комментариях.

Спасибо, и если у меня есть еще один случай, когда я хочу, чтобы удалить первый шаблон только если у меня есть больше чем один повторяющийся рисунок как:

$cat xyz 
ABC 
ABCABC 
ABCABCABC 

Вывод должен быть:

ABC 
ACABC 
ACABCABC 
$cat xy 

Это может быть способ сделать это:

while read line 
do 
    if [ `echo $line | grep -o "B" | wc -l` -ge 2 ] 
    then 
    echo $line | sed 's/B//' 
    else 
    echo $line 
    fi 
done < xyz 

Выход:

ABC 
ACABC 
ACABCABC 
+0

@ sandeep7289, проверить обновленный ответ для РЕКОМЕНДУЕМОГО редактирования. – fedorqui