【发布时间】:2017-04-04 13:55:00
【问题描述】:
这是一个原始的 awk 文件,我想格式化它。
输入内容----名为test.txt的原始awk文件
awk 'BEGIN {maxlength = 0}\
{\
if (length($0) > maxlength) {\
maxlength = length($0);\
longest = $0;\
}\
}\
END {print longest}' somefile
预期输出----格式良好的 awk 文件
awk 'BEGIN {maxlength = 0} \
{ \
if (length($0) > maxlength) { \
maxlength = length($0); \
longest = $0; \
} \
} \
END {print longest}' somefile
step1:获取最长的行和字符数
step1.awk
#! /usr/bin/awk
BEGIN {max =0 }
{
if (length($0) > max) { max = length($0)}
}
END {print max}
awk -f step1.awk test.txt
现在所有行的最大长度为 50。
step2 将 \ 放在 50+2=52 的位置。
step2.awk
#! /usr/bin/awk
{
if($0 ~ /\\$/){
gsub(/\\$/,"",$0);
printf("%-*s\\\n",n,$0);
}
else{
printf("%s\n",$0);
}
}
awk -f step2.awk -v n=52 test.txt > well_formatted.txt
如何将step1和step2合并为一个step,并将step1.awk和step2.awk合并为一个awk文件?
【问题讨论】:
-
发布输入内容和预期输出以获得快速帮助