unix 使用awk遍历文件列表?

ndasle7k  于 2023-03-02  发布在  Unix
关注(0)|答案(5)|浏览(153)

我对awk非常不熟悉,但是我正在寻找一种方法来遍历目录中的所有文件,并执行一个简单的awk命令,我的命令是一个简单的替换,用两个空格替换所有制表符。

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

如何将其扩展为遍历一个目录并对所有文件执行命令?

kxxlusnw

kxxlusnw1#

当然,在命令行上将文件传递给 awk

$ awk 'program' *

但可能它更容易使用

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

或者,如果您希望进行就地编辑,只需:

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

qjp7pelc2#

海森堡理论的改进版

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

它避免调用另一个程序,比如xargs。用我做的一些测试看起来快了一点。

l2osamch

l2osamch3#

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

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

svujldwt4#

您可以使用一个awk命令来完成此操作

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

tf7tbtn25#

这是一个有用的片段,显示了awk处理文件列表,就好像它是一个流一样(注意行号是如何使用的)

find $HOME/.ssh -name "*.pub" -type f \
  -exec awk '{printf "%c) %12s %s...%s %s\n", 64 + NR, $1, substr($2,1,7), substr($2,length($2)-7), $3}' \
  {} +

示例输出

A)      ssh-dss AAAAB3N...WhdJHA== bob@your.uncle
B)  ssh-ed25519 AAAAC3N...9a5kCpbT bob@your.uncle
C)      ssh-rsa AAAAB3N...fzh3oUGZ bob@your.uncle

相关问题