999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

grep軟件在編輯與編務工作中的應用

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

在編輯與編務工作中,如果能靈活運用各種軟件,就會顯著提高效率。下面介紹一下grep軟件在這方面的應用。

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

一、快速剔除書目中的三級標題

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

這個工作很難用Word完成,手工處理又相當耗時。而使用grep軟件就可以快速達到目的。

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

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

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

解壓后進入其文件夾,雙擊其中的CygwinPortable.exe圖標,會出現一個類似于DOS窗口的界面,在其中可以輸入很多命令,包括grep。

grep的命令格式如下:

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

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

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

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

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

若不希望輸出匹配某個模式的文本行,例如要刪除所有書號,則可在模式前加入-v選項,即:

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

將輸出不帶書號的目錄。

通常,輸出結果需要進一步處理,因此應將其用“>”保存在文件中,命令格式如下:

$ grep'匹配模式'原始文件 > 結果文件

例如

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

即可將所有書號保存在result.txt文件中,每個書號一行。若result.txt已經存在,則以前的內容將全被刪掉。結果文件名稱前如不加路徑,則表示保存在當前路徑。

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

(1)執行如下命令:

$ cd c:

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

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

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

打開step1.txt,可以看到,序號形如“1 1 1”和“1. 1. 1”的三級標題都被刪掉了。

(2) 執行如下命令:

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

此處,用“\\.”匹配英文句號,因為單個“.”可以匹配任意字符,而前面加上反斜線(稱為轉義符)后,就只能匹配英文句號。

打開step2.txt,可以看到,序號形如“1.1.1”的三級標題也都被刪掉了,任務完成。

二、查找稿件中的不規范術語

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

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

例如,某位作者為其編寫的C++圖書提供了隨書源文件。部分文件的代碼注釋中使用了不規范的術語,如,把“面向對象”寫成了“物件導向”,把“內存”寫成了“記憶體”。現在要確定哪些文件含有不規范術語。如果逐一查找,比較費時。此時可以把不規范的術語寫在一個名為jargons.txt的文件中,每行一個。將文件放在源文件所在目錄,假設是C:\\source。然后執行如下命令:

$ cd c:

$ cd source

$ grep –f jargons.txt *.cpp

屏幕上就會輸出所有含有不規范術語的源文件名。

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

參考文獻:

[1]陳向群,等譯. Brian W Kernighan, Rob Pike. UNIX編程環境 [M].北京:機械工業出版社,1999.

(作者單位:機械工業出版社計算機分社)

主站蜘蛛池模板: 色精品视频| 欧美有码在线| 波多野结衣一区二区三视频 | 幺女国产一级毛片| а∨天堂一区中文字幕| 国产精品乱偷免费视频| 一级片一区| 国产视频你懂得| 69视频国产| 性网站在线观看| 日韩国产另类| 国产精品一区不卡| 欧美精品一区在线看| 黄色网页在线观看| 97精品久久久大香线焦| 欧美亚洲香蕉| 91精品国产91久无码网站| 欧美视频免费一区二区三区| 免费高清毛片| 免费A∨中文乱码专区| 国产精品中文免费福利| 久久这里只有精品66| 九九热精品在线视频| 国产麻豆va精品视频| 日本不卡视频在线| 中美日韩在线网免费毛片视频| 国产高清毛片| 欧美日韩成人| 国产精品jizz在线观看软件| 亚洲中字无码AV电影在线观看| 人妻丰满熟妇αv无码| 麻豆精品在线播放| 一区二区三区毛片无码| 青青国产视频| 九月婷婷亚洲综合在线| 亚洲色中色| 国产三级毛片| 国产日本视频91| 中文字幕调教一区二区视频| 91无码人妻精品一区| 日韩欧美国产成人| 人人91人人澡人人妻人人爽| 国产一区二区在线视频观看| 久久久91人妻无码精品蜜桃HD| 国产中文一区a级毛片视频| 午夜不卡视频| 国产精品女主播| 一本色道久久88| 成人综合在线观看| 色天堂无毒不卡| 97成人在线视频| 国产熟睡乱子伦视频网站| 免费看的一级毛片| 亚洲AⅤ波多系列中文字幕| 福利一区在线| 久久久久人妻精品一区三寸蜜桃| 欧美色伊人| 成人无码一区二区三区视频在线观看 | 日韩毛片基地| 伊人91在线| 亚洲 日韩 激情 无码 中出| 天天操精品| 噜噜噜综合亚洲| 日本不卡在线播放| 色婷婷在线播放| 国产亚洲精品无码专| 婷婷开心中文字幕| 动漫精品中文字幕无码| 国产成人精品无码一区二| 动漫精品中文字幕无码| 久久一色本道亚洲| 久久永久视频| 无码AV高清毛片中国一级毛片| 亚洲午夜国产精品无卡| 久青草免费在线视频| 中国特黄美女一级视频| 四虎精品国产AV二区| 午夜爽爽视频| 亚洲精品无码AV电影在线播放| 91免费观看视频| 国产午夜无码专区喷水| 国产成人综合日韩精品无码首页|