中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中如何使用Sed文本編輯器

發布時間:2021-10-23 14:50:20 來源:億速云 閱讀:281 作者:小新 欄目:系統運維

這篇文章給大家分享的是有關linux中如何使用Sed文本編輯器的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。


Sed 缺少通常的文本框,而是按照用戶的命令直接寫入到文件上。

sed 命令是為 AT&T 最初的 Unix 操作系統第 7 版創建的,此后,可能每一個 Unix 和 Linux 操作系統都包含了它。sed 應用程序是一個 流編輯器,與文本編輯器不同的是,它不會打開一個視覺緩沖區,將文件的數據加載到其中進行處理。相反,它根據在終端輸入的命令或腳本中的一系列命令,逐行對文件進行操作。

安裝

如果你使用的是 Linux、BSD 或 macOS,那么你已經安裝了 GNU 或 BSD 版的 sed。這是兩個不同的原始 sed 命令的重新實現,雖然它們很相似,但也有一些小的區別。GNU sed 通常被認為是功能最豐富的 sed,而且它在這些平臺上都可以廣泛使用。

如果你找不到 GNU sed(在非 Linux 系統上通常被稱為 gsed),那么你可以從 GNU 網站上下載它的源代碼。安裝 GNU sed 的好處是,可以使用它的額外功能,但它也可以被限制為只符合 sed 的 POSIX 規范,如果你需要移植性的話。

在 Windows 上,你可以用 Chocolatey 來安裝 GNU sed

Sed 如何工作

sed 應用程序一次只處理一行。因為它沒有視覺顯示,所以它在內存中創建了一個模式空間:一個包含輸入流的當前行的空間(去掉任何尾部的換行符)。一旦填充了模式空間,你對 sed 的指令就會被執行。有時你的指令是有條件的,有時是無條件的,所以這些指令的結果取決于你如何使用 sed

當命令結束時,sed 會將模式空間的內容打印到輸出流中。默認的輸出流是標準輸出,但可以將其重定向到一個文件,甚至使用 --in-place=.bak 選項重定向到同一個文件中。

然后再從下一個輸入行開始循環。

sed命令的語法是:

$ sed --options [optional SCRIPT] [INPUT FILE or STREAM]
找到你要編輯的內容

在可視化編輯器中,你通常不需要考慮太多,就能在文本文件中找到你想要修改的內容。你的眼睛(或屏幕閱讀器)會掃描文本,找到你想改變的單詞或你想插入或刪除文本的地方,然后你就可以開始輸入了。而 sed 沒有交互模式,所以你需要告訴它必須滿足什么條件才能運行特定的命令。

在這些例子中,假設一個名為 example.txt 的文件包含了這樣的文字:

helloworldThis is line three.Here is the final line.
行號

指定行號告訴 sed 只對文件中的那一行進行操作。

例如,下面這條命令選擇文件的第 1 行并打印出來。因為 sed 在處理后的默認操作也是打印一行到標準輸出,這樣做的效果就是重復第一行:

$ sed '1p' example.txthellohelloworldThis is line three.Here is the final line.

你也可以步進式指定行號。例如,1~2 表示每兩行選擇一行(“從第一行開始每兩行選擇一行”)。指令 1~3 表示從第一行開始,每三行選擇一行:

$ sed '1p' example.txthellohelloworldThis is line three.Here is the final line.Here is the final line.
行定位

你可以通過使用 $ 作為選擇器,只對文件的最后一行進行操作:

$ sed '$p' example.txthelloworldThis is line three.Here is the final line.Here is the final line.

在 GNU sed 中,你可以選擇多行(例如,sed '1,$p' 打印第一行和最后一行)。

反轉

任何數字或位置的選擇,你都可以用感嘆號(!)字符反轉。下面這將選擇除第一行以外的所有行:

$ sed '1!p' example.txthelloworldworldThis is line three.This is line three.Here is the final line.Here is the final line.
模式匹配

你可以把模式匹配想象成文字處理器或瀏覽器中的查找操作。你提供一個詞(一個 模式),然后選擇了結果。模式匹配的語法是 /pattern/

$ sed '/hello/p' example.txthellohelloworldThis is line three.Here is the final line.$ sed '/line/p' example.txthelloworldThis is line three.This is line three.Here is the final line.Here is the final line.

用 Sed 編輯

一旦你找到了你要編輯的內容,你就可以執行你想要的任何操作。你可以用 sed 中的命令來執行編輯。sed 中的命令不是 sed 命令本身。如果這樣說有幫助的話,可以把它們看作是“動作”或“動詞”或“指令”。

sed 中的命令是單個字母,例如前面例子中使用的打印命令的 p。它們一開始可能很難記憶,但和所有事情一樣,你會隨著練習而了解它們。

p 代表打印

p 指令打印當前模式空間中的任何內容。

d 用于刪除

d 指令刪除模式空間:

$ sed '$d' example.txthelloworldThis is line three.$ sed '1d' example.txtworldThis is line three.Here is the final line.
s 用于搜索和替換

s 命令搜索一個模式并將其替換為其他東西。這可能是 sed 最流行和最隨意的用法,而且它通常是用戶學習的第一個(有時也是唯一的)sed 命令。幾乎可以肯定它是文本編輯中最有用的命令:

$ sed 's/world/opensource.com/' example.txthelloopensource.comThis is line three.Here is the final line.

在你的替換文本中,也可以使用一些特殊的功能。例如,\L 將替換文本轉換為小寫,\l 則只轉換下一個字符。還有其他一些功能,列在 sed 文檔中(你可以用 info sed 命令查看)。

替換子句中的特殊字符 & 指的是匹配到的模式:

$ sed 's/is/\U&/' example.txthelloworldThIS is line three.Here IS the final line.

你也可以通過特殊的標志來影響 s 如何處理它找到的內容。g(應該是指 全局)標志告訴 s 對行上找到的所有匹配項進行替換,而不僅僅是第一個匹配項:

$ sed 's/is/\U&/g' example.txthelloworldThIS IS line three.Here IS the final line.

其他重要的標志還包括用一個數字來表示要影響第幾個出現的匹配模式:

$ sed 's/is/\U&/2' example.txthelloworldThis IS line three.Here is the final line.

w 標志,后面跟著一個文件名,_只有_在有變化的情況下,才會將匹配的行寫入文件:

$ sed 's/is/\U&/w sed.log' example.txthelloworldThIS is line three.Here IS the final line.$ cat sed.logThIS is line three.Here IS the final line.

標志可以組合:

$ sed 's/is/\U&/2w sed.log' example.txthelloworldThis IS line three.Here is the final line.$ cat sed.logThis IS line three.

腳本

有很多很棒的網站都有 sed “單行腳本”,它們給你提供了面向任務的 sed 命令來解決常見的問題。然而,自己學習 sed 可以讓你寫出自己的單行腳本,而且這些單行腳本可以根據你的具體需求來定制。

sed 的腳本可以在終端中寫成一行,也可以保存到文件中,然后用 sed 本身執行。我傾向于把小腳本寫成一個命令,因為我發現自己在現實生活中很少重復使用 sed 命令。當我寫一個 sed 腳本時,通常都是針對一個文件的。例如,在寫完這篇文章的初稿后,我用 sed 來規范 “sed” 的大小寫,而這是我可能永遠也不會再做的任務。

你可以向 sed 發出一系列不同的命令,用分號(;)分開。

$ sed '3t ; s/line/\U&/' example.txthelloworldThis is LINE three.This is the final line.

帶括號的范圍改變

你也可以用大括號({})限制哪些結果受到影響。當你將 sed 命令用大括號括起來時,它們只適用于特定的選擇。例如,“line” 字出現在樣本文本的兩行中。你可以通過聲明所需的匹配條件($ 表示最后一行),并將你希望執行的 s 命令放在緊隨其后的括號中,強制 sed 只影響最后一行:

$ sed '$ {s/line/\U&/}' example.txthelloworldThis is line three.This is the final LINE.

感謝各位的閱讀!關于“linux中如何使用Sed文本編輯器”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 达拉特旗| 济阳县| 莎车县| 文化| 香格里拉县| 新民市| 二连浩特市| 集贤县| 佛教| 邵阳市| 河南省| 峨眉山市| 天台县| 安宁市| 和林格尔县| 嘉黎县| 金门县| 中宁县| 奉贤区| 东莞市| 定襄县| 图木舒克市| 隆昌县| 丰都县| 南通市| 中超| 库尔勒市| 长岭县| 安阳市| 海伦市| 五大连池市| 津市市| 绥中县| 抚宁县| 瑞丽市| 沂水县| 徐汇区| 文昌市| 禄劝| 宾阳县|