unix script Utiliser awk pour parcourir la liste des fichiers?




script awk (4)

Je ne suis pas familier avec awk , mais je cherche un moyen de parcourir tous les fichiers dans un répertoire et d'exécuter une simple commande awk . Ma commande est une substitution simple qui remplace tous les onglets par deux espaces.

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

Comment cela peut-il être étendu à la boucle dans un répertoire et exécuter la commande sur tous les fichiers?


une version améliorée de l'idée de Heisenbug

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

cela évite d'appeler un autre programme comme xargs. Cela semble être un peu plus rapide avec certains tests que j'ai faits.


utilisez find et redirigez la sortie vers awk:

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

Passez les fichiers à awk sur la ligne de commande bien sûr: `

$ awk 'program' *

Mais il est probablement plus facile à utiliser

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

Ou, si vous préférez avoir une modification inplace, simplement:

$ perl -i.orig -pe 's/\t/  /g' *

vous pouvez le faire avec une commande awk

awk -F"\t" '{$1=$1;print $0 >FILENAME}' OFS=" " file




awk