Как заменить заголовок и трейлер всех файлов в каталоге новым заголовком и строкой трейлера, но только до определенного символа? - PullRequest
1 голос
/ 14 мая 2019

У меня есть файлы в каталоге: например:

file1
file2

Оба файла имеют содержимое, похожее на приведенное ниже (заголовок, тело, слова трейлера только для справки):

header: 123xxx   xxx   value=file1id
body: blah blah blah
trailer: 123zzz   zzz   value=file1id

Я хочу запустить команду linux, которая заменит заголовок и трейлер всех файлов в каталоге, вплоть до «file1id», чтобы они выглядели так:

header: 321aaa   aaa   value=file1id
body: blah blah blah
trailer: 321bbb   bbb   value=file1id

Я могу легко найтикак заменить весь заголовок или трейлер в файле в Google, но мне нужен file1id в моем файле.Мне нужно несколько советов о том, как перебрать файлы в каталоге и заменить заголовок и трейлер до определенного символа в заголовке и трейлере.

Я видел множество выражений sed и awk, которые удаляют и заменяют заголовок или трейлер.

sed -rne 's/(value=)\s+\w+/\1 yyy/gip'

Как я упоминал выше, я хочу запустить команду linux, которая заменитзаголовок и трейлер всех файлов в каталоге, вплоть до «file1id», так что они выглядят так:

header: 321aaa   aaa   value=file1id
body: blah blah blah
trailer: 321bbb   bbb   value=file1id

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

В этом примере sed есть две команды замены, одна для первой строки (заголовок) и одна для трейлера последней строки (обозначается $ во второй подстановке). -i опция sed редактирует файл на месте.

sed -i '1 s/^.*value=/yoursubstitution value=/; $ s/^.*value=/yoursubstitution value=/'

выход:

yoursubstitution value=file1id
body: blah blah blah
yoursubstitution value=file1id
0 голосов
/ 14 мая 2019

Вы можете найти соответствие с начала строки (^) до value=

echo 'header: 123xxx   xxx   value=file1id' | sed 's/^.*value=/header: 321aaa   aaa   value=/'
header: 321aaa   aaa   value=file1id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...