awk删除脚本中的所有空行(不使用命令行)

时间:2011-01-23 17:44:26

标签: awk duplicates

我正在使用LaTeX将csv文件转换为pdf。我的awk脚本看起来像这样:

BEGIN {printf "\\documentclass[a4paper,notitlepage]{report}\n" \
"\\usepackage[utf8]{inputenc}\n"\
"\\usepackage[francais]{babel}\n"\
"\\usepackage[T1]{fontenc}\n"\
"\\usepackage{hyperref}\n"\
"\\usepackage{textcomp}\n"\
"\\usepackage[left=1cm]{geometry}\n"\
..........
{print $1"\n" \
$2"\n" \
$3"\n" \
$4"\t"\
$5"\t" \
$6"\t" \
$7"\t" \
$8"\t" \
$9"\t" \
$10"\n""\\linebreak" \
......
$39"\t"\
$40;}

END {print "\\end{document}";}

我找到了各种各样的命令来删除命令行中的空行(awk'NF',awk'$ 0!〜/ ^ $ / {print $ 0}')并尝试将它们合并到脚本的末尾BEGIN和END语句的各种组合,但没有任何作用。

有人可以帮忙吗?非常感谢你提前...

1 个答案:

答案 0 :(得分:0)

尝试在此行!/^$/之前添加{print $1"\n" \

!/^$/ {print $1"\n" \

修改

这是另一种方法:

BEGIN {
    ...
}
!/^[[:blank:]]*$/ {    # skip blank *input* lines
    output = $1"\n" \
             $2"\n" \
             ...
             $40
    # remove blank lines from *output*
    # it also removes trailing whitespace from each line
    gsub("([[:blank:]]*\n)+", "\n", output)
    print output
}
END {
   ...
}