Файл соответствует структурированной информации

В GNUed(примечание :изменяет fileна месте; для вывода отредактированного файла на стандартный вывод вместо этого измените wqна,p q):

printf '%s\n' 'g/^\(\|OTP \)XY:/m0' wq | ed -s file
2
21.11.2021, 00:30
2 ответа

Я решил проблему так

 grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" |
    sed '1s/^/File: /;1!s/^/+ /' >> $logfl
2
21.11.2021, 19:32

Использование GNU rectools (, которые вы упоминаете в комментариях к другому из ваших вопросов):

: >output

recins -f File -v "$(cat logfile)" output

Это создает или очищает файл с именем output, а затем вставляет одно поле с именем Fileсо значением, которое является содержимым файла logfile.

Обратите внимание, что +считается символом новой строки в формате GNU recfile, поэтому в приведенном выше примере вставляется одно значение , содержащее встроенные символы новой строки.

Если вы хотите вставить каждое имя файла как отдельный элемент, вы можете использовать

: >output

xargs -I {} recins -f File -v {} output <logfile

Вышеприведенный вызов recinsодин раз на строку в logfileи вставка отдельной пары значений ключа -для каждой.

Этого можно было бы добиться более эффективно, если бы входными данными был файл CSV:

{ echo File; cat logfile; } | csv2rec >output

Команда echoиспользуется здесь для добавления заголовка CSV к входным данным для csv2rec.

3
22.11.2021, 18:33

Теги

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