日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

UNIX 新手指南,第 3 部分:正則表達(dá)式( 四 )


grep ^golf grep.txt
輸出應(yīng)該類似如下:
golf has been a fine example
若要測試行尾定位點(diǎn),請使用同一個搜索,但是刪除脫字符并在 golf 之后添加一個美元符號 。
grep golf$ grep.txt
使用行尾定位點(diǎn)的輸出類似如下:
let's talk about something besides golf
小結(jié)
現(xiàn)在您已經(jīng)通過在命令行上使用 grep 來學(xué)習(xí)了正則表達(dá)式的基礎(chǔ)知識 。下一步,您將學(xué)習(xí)使用 sed,此實(shí)用程序不僅搜索文本,而且還對搜索結(jié)果進(jìn)行替換 。首先,下面是對您到目前為止已學(xué)習(xí)過的內(nèi)容的小結(jié):
.句點(diǎn)表示任何單個字符
[] 方括號包括一個字符序列
-短橫線在字符之間使用以創(chuàng)建一個序列(在 [] 內(nèi))
^脫字符用于對序列(在 [] 內(nèi))取反
*星號搜索某個搜索項(xiàng)的零個、一個或多個實(shí)例
?問號搜索某個搜索項(xiàng)的零個或一個實(shí)例
加號搜索某個搜索項(xiàng)的一個或多個實(shí)例
$美元符號搜索行尾
^脫字符搜索行首
特殊字符前的反斜杠使該字符成為普通字符(請參見下一部分 。)
使用 sed 來編輯文件
sed 是流編輯器 (stream editor) 的簡寫 。文本編輯器的傳統(tǒng)、現(xiàn)代定義是可用于創(chuàng)建和編輯文本文件的交互式應(yīng)用程序 。sed 也是一個文本編輯器,但它是一個命令行實(shí)用程序而不是交互式實(shí)用程序,從而使之成為一個極其強(qiáng)大的批處理編輯工具 。sed 通常在 Unix Shell 腳本中用于過濾較大的文本文件集 。在本教程的第一部分中,您使用了一個討論 golf 的小型測試文件 。為了演示 sed 編輯器的高級功能,您將使用一個很小的代碼片段,開發(fā)人員可能希望在批處理過程中更改該代碼片段 。
請將以下文本復(fù)制并粘貼到一個名為 sed.txt 的文件中:
system "echo 'project:$project' >> logfile";
system "echo 'version:$version' >> logfile";
system "echo 'optionalid:$optionalid' >> logfile";
system "echo 'nodes:$nodes' >> logfile";
system "echo 'threads:$threads' >> logfile";
正斜杠
前面解釋過的用于 grep 的所有特殊字符在 sed 中也有效 。然而,若要使用 sed,您必須了解一些附加語法 。sed 中的基本表達(dá)式由四個部分組成,各個部分之間用正斜杠 (/) 分隔 。以下是用于基本 sed 命令的常見語法:
sed s/REGULAREXPRESSION/REPLACEMENTSTRING/flags INPUT_FILE
s——搜索和替換
s 指示您希望執(zhí)行搜索和替換 。正斜杠用于綁定 sed 中的正則表達(dá)式 。例如,如果您只希望將詞條 logfile 替換為 logfile.txt,則可以運(yùn)行以下命令:
sed s/logfile/logfile.txt/ sed.txt
輸出應(yīng)該類似如下:
system "echo 'project:$project' >> logfile.txt";
system "echo 'version:$version' >> logfile.txt";
system "echo 'optionalid:$optionalid' >> logfile.txt";
system "echo 'nodes:$nodes' >> logfile.txt";
system "echo 'threads:$threads' >> logfile.txt";
在此情況下要注意的一個要點(diǎn)在于,sed 不會實(shí)際更改 sed.txt 的內(nèi)容 。相反,它將輸出發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備 。對于這些示例,您將把輸出發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備,以便能夠立即看到操作結(jié)果 。
為便于將來參考,可以捕獲輸出或?qū)⑵浒l(fā)送到某個新文件 。例如,若要將輸出發(fā)送到 sed_new.txt,可以運(yùn)行以下命令:
sed s/logfile/logfile.txt/ sed.txt > sed_new.txt
反斜杠
在學(xué)習(xí)使用斜杠的同時,還有另一個非常重要的特殊字符需要學(xué)習(xí) 。反斜杠 () 稱為轉(zhuǎn)義字符,因?yàn)樗鼘φ齽t表達(dá)式解釋中的下一個字符進(jìn)行轉(zhuǎn)義 。更簡單的是,將一個反斜杠放在特殊字符前,將使該字符成為普通項(xiàng)而不是命令項(xiàng) 。這非常重要,因?yàn)樵S多文件(尤其是在編寫代碼的時候)廣泛利用了與用于執(zhí)行正則表達(dá)式的字符相同的字符 。在您的 sed.txt 文件中,您會注意到美元符號的使用 。如果您希望替換 $project 而不替換 project,則需要在搜索和替換中使用轉(zhuǎn)義字符:

推薦閱讀