Меняя слова между словами и числами в строке, используя sed - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь поменять слова, которые встречаются между словами и числами: у меня большой файл, и строки имеют этот порядок, но цифры разные, но слова «СЛОВО, ОПЯТЬ, ПИК» не меняются.

23 TWO-ONE2 WORD 5 AGAIN CIP D(89). 1234541120

Мой желаемый выход должен быть:

23 TWO-ONE2 CIP D(89) WORD 5 AGAIN. 1234541120

Значение около CIP "D (89)", может быть измененона F7 (934) или аналогичный, но это всегда число в ().

Я пробовал команды:

sed -r 's/(WORD[0-9]+) (AGAIN+) (CIP[A-Z][0-9]([A-Z][0-9])+)/\3 \1 \2/'

sed -E 's/^(WORD.+AGAIN).+(CIP \+)/\2 \1/'

Буду признателен за любую помощь!

1 Ответ

1 голос
/ 29 апреля 2019

Вы можете использовать этот POSIX ERE sed:

sed -E 's/(WORD.*AGAIN)([^[:alnum:]]+)(CIP[^(]*\([0-9]+\))/\3\2\1/g' file > newfile

См. Демоверсию regex

Подробнее

  • (WORD.*AGAIN) - группа 1 (\1): WORD, любые 0+ символов, AGAIN
  • ([^[:alnum:]]+) - Группа 2 (\2): один или несколько символов, кроме буквенно-цифровых символов
  • (CIP[^(]*\([0-9]+\)) - Группа 3 (\3): CIP, 0 или более символов, отличных от (, (, 1+ цифр и затем ).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...