LINUX.ORG.RU
ФорумTalks

[sed/awk/???] Помогите с обработкой текста


0

0

Есть куча строк вида

*1 ААА. *2 БББ. *3

Где *1 и *3 — любое количество символов, *2 — любое количество символов, кроме точки. ААА и БББ — просто слова.

Надо сделать из него такое:

*1 *2 ССС ААА. *3

Если строка не попадает под шаблон, её оставляем неизменной.

Кто-нибудь может так? :)

★★★★★

Условие недостаточно точное. *1, *2, *3 могут содержать пробелы? AAA и БББ - это заранее известные слова или случайные?

С трудом верю, что ты сам не можешь.

name_no ★★
()
Ответ на: комментарий от name_no

ААА и БББ — слова-константы.

*1 и *2 и *3 могут содержать пробелы.

Сам не могу,т.к. не умею sed и awk.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

Ну, тут же можно регекспом всё сделать, если константы:

s/^(.*) ААА\. (.*) БББ\. (.*)$/\1 \2 CCC AAA. \3/

sed требует, чтобы были экранированы скобочки:

cat file | sed -e «s/^\(.*\) AAA\. \(.*\) BBB\. \(.*\)$/\1 \2 CCC AAA. \3/»

name_no ★★
()
Ответ на: комментарий от name_no

спасибо... вообще, надо регекспами, sed и awk заняться уже, что-нибудь посоветуешь почитать?

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от name_no

Поправочка.

Из

*1 ААА*2. *3 БББ. *4

сделать такое

*1 ААА *3' ССС*2. *4

*1, *2, *3 — любые символы кроме точек (может быть и пусто)

*3' — это *3 с маленькой буквы

*4 — любое кол-во символов

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

cat file | perl -lpe 'if (/^(.*) AAA(.*)\. (.)(.*) BBB\. (.*)$/){$_= «$1 AAA ».lc($3).«$4 CCC$2. $5»;}'

вообще, надо регекспами, sed и awk заняться уже, что-нибудь посоветуешь почитать?

perldoc perlrequick

name_no ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.