亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        grep軟件在編輯與編務(wù)工作中的應(yīng)用

        2012-04-29 00:00:00車忱管娜李馨馨
        職業(yè)·下旬 2012年6期

        在編輯與編務(wù)工作中,如果能靈活運(yùn)用各種軟件,就會(huì)顯著提高效率。下面介紹一下grep軟件在這方面的應(yīng)用。

        grep本是UNIX/Linux中的命令行程序(類似于DOS程序),現(xiàn)在有多個(gè)Windows版本。它能夠利用稱為“正則表達(dá)式”的技術(shù),輸出文件中具有某種規(guī)律(或稱模式)的文本行。這種規(guī)律可以是一個(gè)簡(jiǎn)單的字符串,如“111”或 “computer”表示含有“111”或“computer”的行;也可以是復(fù)雜的字符串,如“1.3”可以匹配含有113,123,1_3(即在1和3之間有任意一個(gè)字符)的行,因?yàn)椤?”表示匹配任意單個(gè)字符;而“12*3”可以匹配含有13,123,1223,12223(即在1和3之間有任意個(gè)2)的行,此處“*”表示“零個(gè)或多個(gè)前面的單個(gè)字符或字符組合”。

        一、快速剔除書目中的三級(jí)標(biāo)題

        有一批教材(70多本)的目錄保存在同一個(gè)純文本文件C:\\contents.txt中,現(xiàn)在要利用該文件制作一份書目。圖書目錄一般都有三級(jí)標(biāo)題,而在制作書目時(shí),只需要一級(jí)和二級(jí)標(biāo)題。該文件中,標(biāo)題前面沒有空行。三級(jí)標(biāo)題序號(hào)的形式有三種,第一種形如“1.1.1”,即數(shù)字之間有一個(gè)英文句號(hào);第二種形式如“1 1 1”,即數(shù)字之間有一個(gè)很寬的空格;第三種形式如“1.2.1”,即數(shù)字之間有一個(gè)英文句號(hào)緊跟一個(gè)空格。章號(hào)和節(jié)號(hào)最多可能為兩位數(shù),高位均不為零,而小節(jié)號(hào)只有一位數(shù),不可能為零。如果刪掉以這三種形式開頭的文本行,也就完成了剔除三級(jí)標(biāo)題的工作。

        這個(gè)工作很難用Word完成,手工處理又相當(dāng)耗時(shí)。而使用grep軟件就可以快速達(dá)到目的。

        上述三級(jí)標(biāo)題序號(hào)的第一種形式可以表示為“一個(gè)或兩個(gè)數(shù)字之后緊跟一個(gè)英文句號(hào)再緊跟一個(gè)或兩個(gè)數(shù)字再緊跟一個(gè)英文句號(hào)再緊跟一個(gè)數(shù)字”。而經(jīng)過分析,第二種形式中的“很寬的空格”與第三種形式中的“一個(gè)英文句號(hào)緊跟一個(gè)空格”實(shí)際上都是兩個(gè)“不可打印的”字符,因此后兩種形式可以用同一種模式表示,即“一個(gè)或兩個(gè)數(shù)字之后緊跟兩個(gè)不可打印的字符再緊跟一個(gè)或兩個(gè)數(shù)字再緊跟兩個(gè)不可打印的字符再緊跟一個(gè)數(shù)字”。而每個(gè)標(biāo)題各占一行,便于使用grep軟件。了解了這些信息,就可以使用grep軟件剔除三級(jí)標(biāo)題了。

        首先要下載grep。grep包含在名為CygwinPortable的軟件包中,可以在瀏覽器中輸入以下鏈接下載該軟件:

        http://cdnetworks-kr-1.dl.sourceforge.net/project/cygwinportable/cygwinportable/CygwinPortable%200.2/CygwinPortable-0.2.zip

        解壓后進(jìn)入其文件夾,雙擊其中的CygwinPortable.exe圖標(biāo),會(huì)出現(xiàn)一個(gè)類似于DOS窗口的界面,在其中可以輸入很多命令,包括grep。

        grep的命令格式如下:

        $ grep'匹配模式'原始文件

        匹配模式前后均有空格,并且要加上單引號(hào)。模式內(nèi)部不能有空格(除非要匹配空格)。匹配后的結(jié)果將輸出到屏幕上?!?”是顯示在屏幕上的提示符,不必輸入。原始文件的內(nèi)容不受影響。

        例如,書目中每本書的書號(hào)都是一個(gè)五位的數(shù)字,且單獨(dú)放在一行,前面沒有空格。要輸出這些書號(hào),則可以輸入以下命令:

        $ grep'^[0-9]\\{5\\}'contents.txt

        按下回車鍵,屏幕上將輸出所有書號(hào),每行一個(gè)。“^”出現(xiàn)在匹配模式的開頭,表示從文本行的開頭進(jìn)行模式匹配。如果漏掉這個(gè)符號(hào),則會(huì)輸出所有包括五位數(shù)字的行(如某行文字中含有“80486”,則該行也會(huì)輸出)。方括號(hào)表示匹配字符列表中的任意一個(gè)字符,如[0-9]表示匹配任意一個(gè)阿拉伯?dāng)?shù)字,而[a-zA-Z]表示匹配任意一個(gè)大寫或小寫英文字母。\\{n\\}表示欲匹配字符的個(gè)數(shù),此處為5。

        若不希望輸出匹配某個(gè)模式的文本行,例如要?jiǎng)h除所有書號(hào),則可在模式前加入-v選項(xiàng),即:

        $ grep -v'^[0-9]\\{5\\}'contents.txt

        將輸出不帶書號(hào)的目錄。

        通常,輸出結(jié)果需要進(jìn)一步處理,因此應(yīng)將其用“>”保存在文件中,命令格式如下:

        $ grep'匹配模式'原始文件 > 結(jié)果文件

        例如

        $ grep'^[0-9]\\{5\\}'contents.txt > result.txt

        即可將所有書號(hào)保存在result.txt文件中,每個(gè)書號(hào)一行。若result.txt已經(jīng)存在,則以前的內(nèi)容將全被刪掉。結(jié)果文件名稱前如不加路徑,則表示保存在當(dāng)前路徑。

        下面只要用兩步操作就可以完成書目處理。

        (1)執(zhí)行如下命令:

        $ cd c:

        $ grep -v'^[1-9][0-9]*[^[:print:]]\\{2\\}[1-9][0-9]*

        [^[:print:]]\\{2\\}[1-9]'contents.txt > step1.txt

        若“^”是方括號(hào)中的第一個(gè)字符,則不再表示匹配文本行的開頭,而是對(duì)其后面的模式取相反結(jié)果。[:print:]表示可打印字符。因此[^[:print:]]\\{2\\}表示匹配兩個(gè)不可打印字符。注意單引號(hào)括住的部分沒有空格。

        打開step1.txt,可以看到,序號(hào)形如“1 1 1”和“1. 1. 1”的三級(jí)標(biāo)題都被刪掉了。

        (2) 執(zhí)行如下命令:

        $ grep -v'^[1-9][0-9]*\\.[1-9][0-9]*\\.[1-9][0-9]*'step1.txt > step2.txt

        此處,用“\\.”匹配英文句號(hào),因?yàn)閱蝹€(gè)“.”可以匹配任意字符,而前面加上反斜線(稱為轉(zhuǎn)義符)后,就只能匹配英文句號(hào)。

        打開step2.txt,可以看到,序號(hào)形如“1.1.1”的三級(jí)標(biāo)題也都被刪掉了,任務(wù)完成。

        二、查找稿件中的不規(guī)范術(shù)語(yǔ)

        grep還可以從一個(gè)文件中獲取欲匹配的模式,并且一次搜索多個(gè)文件。命令如下:

        $ grep –f 含匹配模式的文件原始文件

        例如,某位作者為其編寫的C++圖書提供了隨書源文件。部分文件的代碼注釋中使用了不規(guī)范的術(shù)語(yǔ),如,把“面向?qū)ο蟆睂懗闪恕拔锛?dǎo)向”,把“內(nèi)存”寫成了“記憶體”?,F(xiàn)在要確定哪些文件含有不規(guī)范術(shù)語(yǔ)。如果逐一查找,比較費(fèi)時(shí)。此時(shí)可以把不規(guī)范的術(shù)語(yǔ)寫在一個(gè)名為jargons.txt的文件中,每行一個(gè)。將文件放在源文件所在目錄,假設(shè)是C:\\source。然后執(zhí)行如下命令:

        $ cd c:

        $ cd source

        $ grep –f jargons.txt *.cpp

        屏幕上就會(huì)輸出所有含有不規(guī)范術(shù)語(yǔ)的源文件名。

        請(qǐng)注意:在進(jìn)行以上輸入時(shí),要在英文狀態(tài)下進(jìn)行,并區(qū)分大小寫(文中涉及操作均為小寫)。而且grep只能操作純文本文件。由于版式限制,一些操作排成了兩行(實(shí)際上均應(yīng)為一行)。

        參考文獻(xiàn):

        [1]陳向群,等譯. Brian W Kernighan, Rob Pike. UNIX編程環(huán)境 [M].北京:機(jī)械工業(yè)出版社,1999.

        (作者單位:機(jī)械工業(yè)出版社計(jì)算機(jī)分社)

        热re99久久精品国产66热6| 伊人情人色综合网站| 久久不见久久见www日本网| а√资源新版在线天堂| 亚洲精品无码不卡av| 午夜不卡亚洲视频| 国产精品女人一区二区三区| 亚洲高清一区二区三区在线播放| 人妻激情偷乱视频一区二区三区| 国产成人涩涩涩视频在线观看| 欧美极品少妇性运交| 精品亚洲国产探花在线播放| 亚洲国产黄色在线观看| 亚洲精品视频在线一区二区| 插b内射18免费视频| 免费毛片在线视频| 成人国产乱对白在线观看| 日韩国产一区二区三区在线观看 | 国产成人综合亚洲看片| 少妇高潮喷水正在播放| 2021国产精品一区二区在线| 亚洲av天堂久久精品| av在线免费观看麻豆| 久久精品第九区免费观看| 丰满熟妇乱子伦| 99精品一区二区三区免费视频| 女优视频一区二区三区在线观看| 国产三级精品三级在线专区| 无码人妻丰满熟妇啪啪网不卡| 无码ol丝袜高跟秘书在线观看| 亚洲欧洲国产日产国码无码 | av成人一区二区三区| 亚洲熟妇久久国产精品| 国产精品免费久久久免费| 东京热加勒比日韩精品| 中文字幕在线亚洲精品一区| 亚洲啪啪视频一区二区| 国产人妻久久精品二区三区老狼 | 色先锋av影音先锋在线| 亚洲欧美日韩中文无线码| 无码啪啪熟妇人妻区|