shell AWK中每个文件的输入文件夹/输出文件夹[重复]

9udxz4iz  于 2022-12-30  发布在  Shell
关注(0)|答案(1)|浏览(164)
    • 此问题在此处已有答案**:

Redirecting stdout with find -exec and without creating new shell(3个答案)
昨天关门了。
我正在尝试通过一个文件列表运行(几个)Awk脚本,并希望将每个文件作为不同文件夹中的输出。我已经尝试了几种方法,但无法找到解决方案。输出文件夹中的输出始终是一个名为{}的文件,其中包括输入文件夹中所有文件的所有内容。
下面是我的代码:

input_folder="/path/to/input"
output_folder="/path/to/output"

find $input_folder -type f -exec awk '! /rrsig/ && ! /dskey/ {print $1,";",$5}' {} >> $output_folder/{} \;

你能给我一个提示吗?我做错了什么?代码是在一个. sh脚本中调用的。

kwvwclae

kwvwclae1#

我可能会选择一个(稍微)不那么复杂的find | xargs,例如:

find "${input_folder}" -type f | xargs -r \
awk -v outd="${output_folder}" '
FNR==1                 { close(outd "/" outf); outf=FILENAME; sub(/.*\//,"",outf) }
! /rrsig/ && ! /dskey/ { print $1,";",$5 > (outd "/" outf) }'

注:$1,";",$5中的逗号将在$1;$2之间插入空格;如果不需要空格,则使用$1 ";" $5(即删除逗号)

相关问题