Как вывести команду awk в определенный формат и сохранить в файл? - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь вывести список имен видеофайлов в указанном формате, используя awk. Вывод должен быть сохранен в текстовый файл.

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

01-20191006184929.mkv
02-2019.mkv

, и желаемый результат будет:

file 01-20191006184929.mkv
file 02-2019.mkv

Мой текущий скрипт просто выводит имя файла. Как добавить «файл» перед каждой строкой? Это мой текущий сценарий:

ls | awk '/.mkv$/' > output.txt

Ответы [ 4 ]

5 голосов
/ 12 октября 2019

Возможно, вы можете использовать awk, но это проще с помощью команды оболочки:

printf "file %s\n" *.mkv > output.txt

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

Примечание: Не разбирать ls

1 голос
/ 12 октября 2019

Просто для удовольствия:

$ stat -c "file %n" *mkv
$ find -name '*mkv' -printf "name %p\n"
1 голос
/ 12 октября 2019

И используя awk:

$ awk 'BEGIN{for(i=1;i<ARGC;i++)print "file",ARGV[i]}' *.mkv

Вывод:

file 01-20191006184929.mkv
file 02-2019.mkv

Объяснил:

$ awk '
BEGIN {                       # no need to touch the files
    for(i=1;i<ARGC;i++)       # for all parameter filenames
        print "file",ARGV[i]  # print
}' *.mkv                      # filename set goes here
1 голос
/ 12 октября 2019

Мы не должны анализировать ls вывод, вы можете попробовать с for loop.

for file_name in *.mkv
do
   echo "file $file_name"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...