Использование awk для перебора списка файлов? - PullRequest
3 голосов
/ 27 августа 2011

Я довольно незнаком с awk, но я ищу способ перебрать все файлы в каталоге и выполнить простую команду awk. Моя команда - это простая замена, которая заменяет все вкладки двумя пробелами.

awk '{gsub("\t","  ");print}'

Как это можно расширить, чтобы перебрать каталог и выполнить команду для всех файлов?

Ответы [ 4 ]

3 голосов
/ 27 августа 2011

Передайте файлы в awk в командной строке, конечно: `

$ awk 'program' *

Но, вероятно, его проще использовать

$ perl -pe 's/\t/  /g' *

Или, если вы предпочитаете редактирование на месте, просто:

$ perl -i.orig -pe 's/\t/  /g' *
1 голос
/ 11 апреля 2013

улучшенная версия идеи Гейзенбага

find . -type f -exec awk '{gsub("\t"," ");print}' {} \;

избегает вызова другой программы, такой как xargs. Кажется, с некоторыми тестами, которые я делал, это происходит немного быстрее.

0 голосов
/ 28 августа 2011

вы можете сделать это с помощью одной awk команды

awk -F"\t" '{$1=$1;print $0 >FILENAME}' OFS=" " file
0 голосов
/ 27 августа 2011

используйте поиск и перенаправьте вывод в awk:

find . -type f | xargs awk '{gsub("\t"," ");print}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...