2011-01-23 37 views
1

我正在使用LaTeX將csv文件轉換爲pdf。我的awk腳本是這樣的: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〜/^$/{打印$ 0}')並試圖將它們與BEGIN和END語句的各種組合結合在一起,但沒有任何結果。

任何人都可以幫忙嗎?預先感謝您非常...

+0

你可以問一個位清晰。我根本不理解一個問題。提供一些簡單的csv示例,它將由腳本錯誤地處理,並解釋什麼是不正確的,即最終結果是什麼。 – Max 2011-01-23 18:20:04

+0

@Max:csv處理得很好,除了我在每條記錄之後,\ linebreak插入前和\ linebreak插入之後都有空行。我需要刪除這些空行來正確處理.tex文件爲pdf。當然,如果我從命令行運行awk NF文件名,它可以正常工作。但關鍵是要有一個簡單的腳本文件。 – Trying 2011-01-23 22:16:03

回答

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 { 
    ... 
}