Добавьте новую строку (\ n) перед каждой стрелкой вперед (>)

Вот мое предложение по использованию временного файла:

tmpdir=$(mktemp)
find "Image Folder" -print0  > $tmpdir/temp
{ grep -z collage $tempdir/temp | sort -z; 
  grep -z -v collage $tempdir/tmp | sort -z; } | \
  tar cv --no-recursion --null -T -
rm -rf $tmpdir

Вы можете использовать что-то более простое для временного файла, при условии, что вы не помещаете его в "Image Folder".

Основная идея этого решения - сохранить результаты find во временный файл, чтобы мы могли запустить два grepа, сортируя каждый результат grep по отдельности, прежде чем объединить их в трубу для tar.

0
09.04.2019, 10:07
3 ответа

Вы не должны избегать>(\>это специальное слово -граница шаблон ).

У меня это работает (с использованием GNUsed):

 sed -e 's/>/\n>/g' file1

В вашем случае вывод, который я получаю,:


>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
4
28.01.2020, 02:15

\>— это специальный шаблон, который будет соответствовать пробелу нулевой ширины -между словом и не -символом слова. >ни в каком смысле не является особенным, поэтому его не нужно экранировать.

Чтобы добавить новую строку перед каждым >в каждой строке, кроме первой, используя стандартный sed, вы можете сделать

$ sed '2,${ y/>/\n/;s/\n/&>/g; }' file
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ

Стандарт sedне может вставить новую строку с помощью s/>/\n>/g, поэтому мы должны сделать это в два этапа.

2,$обращается ко всем строкам ввода, кроме начальной строки. К этим строкам будут применены команды из {... }.

Команда y/>/\n/заменяет все экземпляры символа >новой строкой. Команда yможет вставлять новые строки в стандартный sed.

s/\n/&>/gзаменяет каждую сгенерированную новую строку совпадающей новой строкой, за которой следует >. Когда &встречается в замещающей части команды s, она вставляет все, что соответствует шаблону.

1
28.01.2020, 02:15

Я попытался использовать описанный ниже метод, и он работал нормально

команда:sed "/^[^>]/s/>.*/\n&/g" filename

выход

sed "/^[^>]/s/>.*/\n&/g" filename
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
>XXX[YY]
ZZZZZZ
1
28.01.2020, 02:15

Теги

Похожие вопросы