Sed - изменения в нескольких файлах на Ma c OSX - PullRequest
0 голосов
/ 04 мая 2020

Я хотел бы добавить текст в конец некоторых определенных c файлов. Однако если я сделаю это:

[command producing file names] | xargs sed -e '$s/$/\
TEXT/'

, я получу следующий результат:

(all the contents of every single matching file)
TEXT

Это явно не то, что я хочу. Добавление g к шаблону подстановки также не помогает, а включение -i приводит только к последнему редактируемому файлу.

Могу ли я что-нибудь сделать, чтобы исправить это или альтернативу, чтобы добавить специфику c строка до конца списка файлов?

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Если вы пытаетесь добавить строку к набору файлов, сделайте это просто и просто напишите строку в конец каждого файла:

while IFS= read -r file; do
    printf '%s\n' 'TEXT' >> "$file"
done < <(command producing file names)

или вы все равно можете использовать xargs, если вы предпочитаю:

command producing file names |
xargs -I {} sh -c 'printf '\''%s\n'\'' '\''TEXT'\'' >> {}'
0 голосов
/ 04 мая 2020

Мой товарищ по команде сказал мне рабочее решение: добавление -n 1 к xargs на самом деле исправляет это.

[command producing file names] | xargs -n 1 sed -e '$s/$/\
TEXT/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...