sed是一種流編輯器,一次處理一行,處理空間被稱為模式空間,配合正規表示式與shell指令碼使用廣泛。
預設列印p選項
-n 關閉預設列印
-i.bak 將原檔案複製為.bak備份檔案,並修改原檔案
-r 配合擴充套件表示式
支援正規表示式,用/pattern/格式
位址界定不給定位址 對全文進行處理
/pattern/:被正規表示式匹配到的行
位址範圍 n,m 從第n行到第m行
n,+m 從第n行到n+m行
/pattern1/,/pattern2/ 從正規表示式首次匹配的行到第二次匹配的行
~:步進
1~2 從第一行開始,每隔兩行=奇數行;
2~2 從第二行開始,每隔兩行=偶數行
命令p 列印
d 刪除
a 匹配的行的下一行追加指定字元,若需加空格,需使用反斜槓\進行轉義
c 替換指定行為指定內容
w 寫匹配到的內容到指定檔案
r 讀取指定檔案內容到匹配的行的下一行
= 匹配到的行列印出行號
! 取反,!位於位址界定與命令之間
s 替換,\1引用正規表示式得第乙個分組,\2則代表第二個分組,依次類推,&代表匹配的內容
---- g表示全文替換,如果不加g,表示全文每行的第乙個替換
變數用三個單引號引用
用sed獲取ifconfig得ip
ifconfig | sed -n '2p' |sed -r 's/(^[^0-9]+)([0-9.]+)( .*$)/\2/'
正規表示式解釋:(以非數字[^0-9]開頭的內容)(數字.匹配1次或多次,匹配ip)(任意字元到詞尾)
將ifconifg先取第二行,然後將該行分為三個部分,第乙個括號表示從開頭到非數字,第二個括號表示數字.,第三個表示空格到詞尾,然後用\2取第二部分做替換,也就是取到ip部分
優化:只對第二部分進行分組,同時用該分組做替換即可
ifconfig | sed -n '2p' |sed -r 's/^[^0-9]+([0-9.]+) .*$/\1/'
替換行內容,在行尾追加1
sed -ri.bak '/^[[:space:]]+linux16/s@.*@&net.ifnames=0@' /boot/grub2/grub.cfg
vim文字處理器
linux 下的vi 是一種文字編輯器,後來的公升級版本是vim。vi 分為三種模式 一般模式 編輯模式 命令命令模式。它們之間的關係如下 下面分類別解析命令 注意是 那個鍵 返回到游標剛才的位置 ctrl f往下翻頁 forward ctrl b往上翻頁 backward n 移動到本行的第n列 ...
文字處理器 wc cut sort uniq
wc word count統計文字檔案中的字元個數 用法 wc filename 行數 字元個數 檔案大小 位元組 檔名 l w ccut 用來做檔案分隔 d 指定分隔符 delimiter d 不行 f 指定輸出的列資料 f2 f1 3 f1,3 output delimiter xx cut的侷...
linux 文字處理sed
ed與sed的區別 sed是從ed發展來的,ed是針對當前行進行操作 sed是面向字元流的。sed和ed的應用定址有很大的區別。在ed中沒有指定位址的命令只影響當前行。sed遍歷檔案,每次讀取一行,這樣每行都是當前行,每行都應用這個命令,結果是sed對檔案中的每一行都應用了ed中沒有位址的命令。如s...