LINUX.ORG.RU

sed не изменяет текст


0

1

Есть текст:

1492.10.1 = { discovered_by = CAS } # Christopher Columbus
1516.1.23 = { discovered_by = SPA }

Надо заменить на:

1443.10.1 = { discovered_by = TOR } # Christopher Columbus
1516.1.23 = { discovered_by = SPA }

Выполняю:

sed 's/1492\.\([0-9]{1,2}\.[0-9]{1,2}\) = { discovered_by = CAS }/1443\.\1 = { discovered_by = TOR }/g' provinces/1526\ -\ Coast\ of\ Hispaniola.txt

Никакой реакции, хотя grep -P находит по данному регексу строчку.

В принципе пойдет и более простой вариант:

1443.1.1 = { discovered_by = TOR } # Christopher Columbus
1516.1.23 = { discovered_by = SPA }

Для этого я пробовал:

sed 's/1492\.[0-9]{1,2}\.[0-9]{1,2} = { discovered_by = CAS }/1443\.1.1 = { discovered_by = TOR }/g' provinces/1526\ -\ Coast\ of\ Hispaniola.txt 

Но тоже никакой реакции.

sed -r 's/1492\.([0-9]{1,2}\.[0-9]{1,2}) = \{ discovered_by = CAS \}/...'
anonymous
()

В sed вообще что-то странное с регулярками... Недавно столкнулся с тем, что grep и awk работают, a sed не может.

comp00 ★★★★
()
$ <<EOF sed 's/^1492/1443/'
1492.10.1 = { discovered_by = CAS } # Christopher Columbus
1516.1.23 = { discovered_by = SPA }
EOF

1443.10.1 = { discovered_by = CAS } # Christopher Columbus
1516.1.23 = { discovered_by = SPA }
ziemin ★★
()
Ответ на: комментарий от anonymous

Спасибо, анон. Ларчик то просто открывался.

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