Я довольно незнаком с awk, но я ищу способ перебрать все файлы в каталоге и выполнить простую команду awk. Моя команда - это простая замена, которая заменяет все вкладки двумя пробелами.
awk
awk '{gsub("\t"," ");print}'
Как это можно расширить, чтобы перебрать каталог и выполнить команду для всех файлов?
Передайте файлы в awk в командной строке, конечно: `
$ awk 'program' *
Но, вероятно, его проще использовать
$ perl -pe 's/\t/ /g' *
Или, если вы предпочитаете редактирование на месте, просто:
$ perl -i.orig -pe 's/\t/ /g' *
улучшенная версия идеи Гейзенбага
find . -type f -exec awk '{gsub("\t"," ");print}' {} \;
избегает вызова другой программы, такой как xargs. Кажется, с некоторыми тестами, которые я делал, это происходит немного быстрее.
вы можете сделать это с помощью одной awk команды
awk -F"\t" '{$1=$1;print $0 >FILENAME}' OFS=" " file
используйте поиск и перенаправьте вывод в awk:
find . -type f | xargs awk '{gsub("\t"," ");print}'