第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

一個轉(zhuǎn)換花引號的 gawk 腳本

標簽:
Linux

得到我的 awk 秘籍。


我管理着一个个人网站,用手工编辑网站上的网页。由于网站上的页面并不多,这种方法对我很适合,可以让我对网站代码的细节一清二楚。


最近我升级了网站的设计样式,我决定把所有的普通引号都转换成“花引号”,即在打印材料中使用的那种引号:用 “” 来代替 ""。


手工修改所有的引号太耗时了,因此我决定将这个转换所有 HTML 文件中引号的过程自动化。不过通过程序或脚本来实现该功能需要费点劲。这个脚本需要知道何时将普通引号转换成花引号,并决定使用哪种引号(LCTT 译注:左引号还是右引号,单引号还是双引号)。


有多种方法可以转换引号。Greg Pittman 写过一个 Python 脚本 来修正文本中的花引号。而我自己使用 GNU awk (gawk) 来实现。


下载我的 awk 秘籍。免费下载。


开始之前,我写了一个简单的 gawk 函数来评估单个字符。若该字符是一个引号,这该函数判断是输出普通引号还是花引号。函数查看前一个字符;若前一个字符是空格,则函数输出左花引号。否则函数输出右花引号。脚本对单引号的处理方式也一样。


function smartquote (char, prevchar) {

        # print smart quotes depending on the previous character

        # otherwise just print the character as-is

        if (prevchar ~ /\s/) {

                # prev char is a space

                if (char == "'") {

                        printf("‘");

                }

                else if (char == "\"") {

                        printf("“");

                }

                else {

                        printf("%c", char);

                }

        }

        else {

                # prev char is not a space

                if (char == "'") {

                        printf("’");

                }

                else if (char == "\"") {

                        printf("”");

                }

                else {

                        printf("%c", char);

                }

        }

}

这个 gawk 脚本的主体部分通过该函数处理 HTML 输入文件的一个个字符。该脚本在 HTML 标签内部逐字原样输出所有内容(比如,<html>)。在 HTML 标签外,脚本使用 smartquote() 函数来输出文本。smartquote() 函数来评估是输出普通引号还是花引号。


function smartquote (char, prevchar) {

        ...

}

BEGIN {htmltag = 0}

{

        # for each line, scan one letter at a time:

        linelen = length($0);

        prev = "\n";

        for (i = 1; i <= linelen; i++) {

                char = substr($0, i, 1);

                if (char == "<") {

                        htmltag = 1;

                }

                if (htmltag == 1) {

                        printf("%c", char);

                }

                else {

                        smartquote(char, prev);

                        prev = char;

                }

                if (char == ">") {

                        htmltag = 0;

                }

        }

        # add trailing newline at end of each line

        printf ("\n");

}

下面是一个例子:


gawk -f quotes.awk test.html > test2.html

其输入为:


<!DOCTYPE html>

<html>

<head>

  <title>Test page</title>

  <link rel="stylesheet" type="text/css" href="/test.css" />

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width" />

</head>

<body>

  <h1><a href="/"><img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="logo.png" alt="Website logo" /></a></h1>

  <p>"Hi there!"</p>

  <p>It's and its.</p>

</body>

</html>

其输出为:


<!DOCTYPE html>

<html>

<head>

  <title>Test page</title>

  <link rel="stylesheet" type="text/css" href="/test.css" />

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width" />

</head>

<body>

  <h1><a href="/"><img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="logo.png" alt="Website logo" /></a></h1>

  <p>&ldquo;Hi there!&rdquo;</p>

  <p>It&rsquo;s and its.</p>

</body>

</html>

编译自:https://opensource.com/article/18/8/gawk-script-convert-smart-quotes作者: Jim Hall
原创:LCTT https://linux.cn/article-9969-1.html译者: DarkSun

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消