Awk удаляет все пустые строки в скрипте (не с командной строкой) - PullRequest
1 голос
/ 23 января 2011

Я конвертирую CSV-файл в PDF, используя LaTeX. Мой скрипт 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 голосов
/ 23 января 2011

Попробуйте добавить !/^$/ перед этой строкой {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 {
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...