文字處理器sed

2022-07-26 00:27:13 字數 1378 閱讀 4853

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...