Сопоставление с образцом в оболочке - PullRequest
3 голосов
/ 06 марта 2012

Мой вводимый текст в этом формате

 aa5b    r1     12715
 r2     12221
 aa43b   ew     13721
 eb     122331
 aa4b    ff     1055440

Выход должен быть

aa5    r1     12715
r2    12221
aa43   ew     13721
eb  122331
aa4    ff     1055440

Я пытался с

 awk -F " " '{print $1}' t1 | grep "^aa*" > t2|sed s/b//g t2

Проблема с этим кодом заключается в том, что входной текст не имеет фиксированного шаблона.

Ответы [ 4 ]

1 голос
/ 06 марта 2012

Спецификации не понятны из вашего описания проблемы, но если вы просто хотите удалить все вхождения символа 'b' в строках, начинающихся с 'aa', вы можете использовать:

sed '/^aa/s/b//g'
1 голос
/ 06 марта 2012

А как насчет этой версии с sed?

sed 's/^\(aa[0-9]*\)b/\1/' t1 > t2
1 голос
/ 06 марта 2012

Было бы проще использовать что-то вроде perl и regex:

perl -p -e 's/^(aa[0-9]+)\w+/$1/' t1 > t2
0 голосов
/ 06 марта 2012
awk ' $1 ~ /a/ { $1= substr($1,0,length($1)-1) };1' infile > outfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...