Bash скрипт с использованием sed для добавления строки в конец файла, если строка не существует на Mac - PullRequest
0 голосов
/ 13 июля 2020

Мне нужно использовать sed вместо echo и добавить в конец файла: list.txt

list.txt имеет список каталогов:

/ desktop / test1 / file1

/ desktop / test2 / file1

Мне нужно добавить еще один каталог с косой чертой к этому list.txt в конце файла, если этот каталог уже не существует в списке. Например: / desktop / file1 Результат должен быть:

/ desktop / test1 / file1

/ desktop / test2 / file1

/ desktop / file1

Я пробовал использовать этот скрипт, но у меня возникли синтаксические ошибки с командой, которая, как я видел, может быть проблемой ma c?:

#!/bin/bash
if ! grep -q "/desktop/file1" user/admin/Desktop/list.txt; then
    sed -i -e '$a/desktop/file1' user/admin/Desktop/list.txt
fi

1 Ответ

0 голосов
/ 14 июля 2020

Команда a используется как a\ в стандартном sed и должна сопровождаться новой строкой и текстом для записи. Используемая вами форма является расширением GNU. Таким образом, стандартная команда sed для выполнения задания может выглядеть так:

sed -i '' '$a\
/desktop/file1' user/admin/Desktop/list.txt

или

sed -i '' '$a\'$'\n''/desktop/file1' user/admin/Desktop/list.txt

с использованием ANSI- C цитирования в bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...