用awk遍历文件列表?

我很不熟悉awk ,但是我正在寻找一种方法来遍历目录中的所有文件,并执行一个简单的awk命令。 我的命令是一个简单的replace,用两个空格replace所有的选项卡。

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

这怎么能扩展到循环目录并对所有文件执行命令?

把文件传给awk ,当然在命令行上:`

 $ awk 'program' * 

但可能它使用起来更简单

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

或者,如果您想要进行现场编辑,只需:

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

一个改进的Heisenbug的想法

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

它避免了调用像xargs这样的另一个程序。 我做了一些测试似乎有点快。

使用find和将输出重定向到awk:

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

你可以用一个awk命令来完成

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