Awk GNU与可变格式printf并行
我在使用下面的代码获取正确的输出格式时遇到了一些问题。输出应如下所示:Awk GNU与可变格式printf并行,awk,printf,gnu-parallel,Awk,Printf,Gnu Parallel,我在使用下面的代码获取正确的输出格式时遇到了一些问题。输出应如下所示: bb.pdf---------------color found HIGHLY Rate.pdf------color found 等等…等等 我得到: bb.pdf---------------color found HIGHLY Rate.pdf---------------color found 好的,我正在尝试使用printf%s%*.*s%s格式获取变量printf格式 其中**在运行时动态设置。在下面的代码中
bb.pdf---------------color found
HIGHLY Rate.pdf------color found
等等…等等
我得到:
bb.pdf---------------color found
HIGHLY Rate.pdf---------------color found
好的,我正在尝试使用printf%s%*.*s%s格式获取变量printf格式
其中**在运行时动态设置。在下面的代码中,在以printf开头的行中,如果我设置了
printf "%s%0.55s%s" $file_name $pad; gs -o - -sDEVICE............etc etc etc
然后代码运行。这就告诉我,我很快就能让它发挥作用了。问题是我找不到
0和$var_格式将其值发送到**,这将提供printf的变量性质,即printf%s%0。$var_格式%s。感谢任何有意见的人
A.达斯
cat /cygdrive/i/PDF/$machine/results.csv | \
parallel -j200% --progress 'padlength=130;\
width=`echo {}| wc -c`;\
pad=$(printf '%0.1s' "-"{1..60});\
file_name=`echo -n {} | sed "s;.*/;;"`;\
var_format=$((padlength - width - 11 ));\
printf "%s%*.*s%s" $file_name 0 $var_format $pad ;gs -o - -sDEVICE=inkcov {} 2>/dev/null | \
awk "/CMYK OK$/ {if (\$1>0 || \$2>0 || \$3>0) {print \"------------------------------\
color found\"; exit;} } \
END {print \"\" }";' >> /cygdrive/i/PDF/$machine/color_report_summary.txt
关于如何将printf与awk一起使用的示例
-30表示第一个字段的空格为30个字符,并进行左调整。
您需要为最长的字段设置足够的空间 Gracias,我讨厌设置一个修复字段,如果你注意到的话,awk并没有对我想要打印的文件执行操作。Awk作用于gs命令的输出,因此我无法从Awk打印所有内容。
cat file
bb.pdf
HIGHLY Rate.pdf
awk '{printf "%-30s %s\n", $0,var}' var="color found" file
bb.pdf color found
HIGHLY Rate.pdf color found