печатать содержимое файла в кавычках через одну строку - PullRequest
1 голос
/ 17 февраля 2020

Как напечатать содержимое файла в виде кавычек и одной строки, разделенных запятыми.

$cat test
file1.gz
file2.gz
file3.gz
file4.gz

Я хочу напечатать как 'file1.gz','file2.gz','file3.gz','file4.gz'

Ответы [ 2 ]

3 голосов
/ 17 февраля 2020
$ awk '{printf "%s\047%s\047", sep, $0; sep=","} END{print ""}' file
'file1.gz','file2.gz','file3.gz','file4.gz'

или эквивалентная функциональность, но сохраняющий весь входной файл в памяти:

$ awk '{out=out sep "\047" $0 "\047"; sep=","} END{print out}' file
'file1.gz','file2.gz','file3.gz','file4.gz'

и сокращенно для игроков в гольф: -):

$ awk -v q="'" '{o=o s q $0 q; s=","} END{print o}' file
'file1.gz','file2.gz','file3.gz','file4.gz'

Лично я бы используйте первый скрипт выше, если у вас нет определенной c необходимости создать всю выходную запись перед печатью, например, чтобы каким-то образом изменить ее на основе многострочного регулярного выражения.

3 голосов
/ 17 февраля 2020

Преобразование одного столбца в один ряд с разделителем. С sed и пастой:

sed "s/.*/'&'/" file | paste -sd ","

Выход:

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