Замена в al oop с использованием find и sed - PullRequest
0 голосов
/ 11 февраля 2020

Пожалуйста, помогите мне советом

Мне нужно go просмотреть файлы в этом каталоге $ tmp и произвести замены в строках в соответствии с правилом, описанным в sed

, на котором я тренировался один файл и этот sed работал нормально. Но когда я выполняю замену в для , я получаю какую-то ерунду на выходе

for file in $tmp/*.txt; do
    find $tmp/ -type f -name "*.txt" -exec sed -i -e 's/, /\n''/g; s/"//g; s/$/\x0A/; s/:[ ]/;/g;  s/\n''/;\n''/g; s/^[ t]*//' {} \;
done

Как это исправить? Спасибо…

UP

Я сделал это.

найти - это было действительно ненужно

@ Rob Sweet Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Если вам не нужно редактировать файлы в подкаталоге /tmp, тогда укажите sed всех файлов за один раз.

sed -i your_command *.txt

Выключите topi c:
Я надеваю не понимаю вашу команду sed. Почему две одинарные кавычки? Если вы хотите заменить новую строку, рассмотрите вариант -z.

0 голосов
/ 12 февраля 2020

Вам не нужна команда для l oop И команда find. Оба по сути делают одно и то же, то есть перебирают все файлы в / tmp, которые соответствуют * .txt.

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