Разобрать вывод grep для пометки файлов - PullRequest
1 голос
/ 25 марта 2020

После длинного канала, который заканчивается grep, я правильно получаю набор подходящих абсолютных путей / файлов и сопоставляю строку, разделенную запятой для каждого. Я хочу пометить каждый файл соответствующей строкой. Сложно также то, что в пути есть пробелы, но между разделителем и предыдущими и последующими символами нет пробелов.

Мне нужно иметь дело с абсолютным путем, а не только с именем файла в каталоге. Строки соответствия являются space_free, но имя файла может быть не таким:

Так, в качестве примера, вывод канала может выглядеть следующим образом:

pipe1 | pipe2 | 

outputs


/Users/bloggs/Directory One/matched_file.doc,attributes_0001ABC
/Users/bloggs/Directory One/matched_file1.doc,attributeY_2
/Users/bloggs/Directory One/match_file_00x.doc,Attribute_00201
/Users/bloggs/Directory One/matching file 2.doc,attribute_0004

Я хочу пометить каждый, используя что-то, что вероятно, будет включать:

    tag --add "$attribute" "$file"

Где атрибут относится к строке совпадения, например, "Attribute_00201"

Обычно я просто скажу, например:

   tag --add Attribute_00201  /Users/bloggs/Directory\ One/match_file_00x.doc

На данный момент Я застрял, как в идеале анализировать каждую строку через другой канал и правильно обрабатывать пробелы и выполнить команду тега. Благодарен за любую помощь

Итак, я ищу новый канал, pipe3 для выполнения или выдачи мне правильно отформатированной команды тега:

pipe1 | pipe2 | pipe3

delivers eg

tag --add Attribute_00201  /Users/bloggs/Directory\ One/match_file_00x.doc


etc
etc

Кажется, это работает


| tee  >(cut -f2 -d","| sed  's/^/tag --add  /' > temp_out.txt) >(cut  -d"," -f1 |   sed -e 's/[[:space:]]/\\ /g' > temp_out1.txt) > /dev/null && paste -d' ' temp_out.txt  temp_out1.txt   > command.sh && chmod +x ./command.sh

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