根據我的喜好,我在 awk 中開發了一個將 tex 檔案轉換為 html 的腳本。
#!/bin/awk -f
BEGIN {
FS="\n";
print "<html><body>"
}
# Function to print a row with one argument to handle either a 'th' tag or 'td' tag
function printRow(tag) {
for(i=1; i<=NF; i ) print "<"tag">"$i"</"tag">";
}
NR>1 {
[conditions]
printRow("p")
}
END {
print "</body></html>"
}
正如所見,它處于非常年輕的發展階段。
\documentclass[a4paper, 11pt, titlepage]{article}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{imakeidx}
[...]
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla placerat lectus sit amet augue facilisis, eget viverra sem pellentesque. Nulla vehicula metus risus, vel condimentum nunc dignissim eget. Vivamus quis sagittis tellus, eget ullamcorper libero. Nulla vitae fringilla nunc. Vivamus id suscipit mi. Phasellus porta lacinia dolor, at congue eros rhoncus vitae. Donec vel condimentum sapien. Curabitur est massa, finibus vel iaculis id, dignissim nec nisl. Sed non justo orci. Morbi quis orci efficitur sem porttitor pulvinar. Duis consectetur rhoncus posuere. Duis cursus neque semper lectus fermentum rhoncus.
\end{document}
我想要的是,腳本只解釋 and 之間的行\begin{document},\end{document}因為在它們之前是庫、變數等的匯入;目前我不感興趣。
我如何使它只處理該模式中的文本?
uj5u.com熱心網友回復:
當您提供兩個條件時,GNUAWK具有稱為Range,的功能,然后操作將僅在具有這些條件的行之間應用(包括這些行),考慮以下簡單示例,讓file.txt內容為
junk
\begin{document}
desired text
more desired text
\end{document}
more junk
然后
awk '$0=="\\begin{document}",$0=="\\end{document}"{print}' file.txt
給出輸出
\begin{document}
desired text
more desired text
\end{document}
(在 gawk 4.2.1 中測驗)
uj5u.com熱心網友回復:
使用正則運算式設定標志,然后根據該標志列印:
awk '/^\\begin{document}/{flag=1}
flag
/^\\end{document}/{flag=0}' file
列印開始和結束字串之間的所有內容:
\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla placerat lectus sit amet augue facilisis, eget viverra sem pellentesque. Nulla vehicula metus risus, vel condimentum nunc dignissim eget. Vivamus quis sagittis tellus, eget ullamcorper libero. Nulla vitae fringilla nunc. Vivamus id suscipit mi. Phasellus porta lacinia dolor, at congue eros rhoncus vitae. Donec vel condimentum sapien. Curabitur est massa, finibus vel iaculis id, dignissim nec nisl. Sed non justo orci. Morbi quis orci efficitur sem porttitor pulvinar. Duis consectetur rhoncus posuere. Duis cursus neque semper lectus fermentum rhoncus.
\end{document}
如果您只想要文本之間而不包括開始和結束字串:
awk '
/^\\begin{document}/{flag=1; next}
/^\\end{document}/{flag=0}
flag' file
印刷:
# leading blank line printed...
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla placerat lectus sit amet augue facilisis, eget viverra sem pellentesque. Nulla vehicula metus risus, vel condimentum nunc dignissim eget. Vivamus quis sagittis tellus, eget ullamcorper libero. Nulla vitae fringilla nunc. Vivamus id suscipit mi. Phasellus porta lacinia dolor, at congue eros rhoncus vitae. Donec vel condimentum sapien. Curabitur est massa, finibus vel iaculis id, dignissim nec nisl. Sed non justo orci. Morbi quis orci efficitur sem porttitor pulvinar. Duis consectetur rhoncus posuere. Duis cursus neque semper lectus fermentum rhoncus.
# ending blank line printed...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/521132.html
標籤:壳awk脚本
