【Linux】 三大編輯神器 - sed (中集)

本文介紹的是sed,在編輯時候,更多新鮮實用的作法。code

  • w 另存爲文件(相當於Ctrl+s)
  • s 數字格式替換

示例一:字符串

#將test.txt裏面的內容另存爲output
sed 'w output.txt' test.txt

示例二:test

#將test.txt的第二行插入102,上海並保存為output
#分號;能夠一行執行多條語句
sed '2i 102,上海;w output.txt' test.txt

sed '[地址範圍|模式範圍]' \
s#[被替換的字符串]#[替換後的字符串]#[替換標誌] [輸入文件]sed

替換標誌 g全局標誌 數字標誌1,2,3 ;方法

  • 打印p
  • 寫入w
  • 忽略大小寫i
  • 執行命令標誌 e

實例1:數據

cat gg.text
#第一列能夠所有替換
sed 's#1#0#1' gg.text
#第二列的第一行替換
sed '2s#1#0#1' gg.text
#第二,第三列的第一行替換
sed '2,3s#1#0#1' gg.text
#第一行的所有替換
sed '2s#1#0#1g' gg.text
#第二行從第4個開始所有替換
sed '2s#1#0#4g' gg.text
#第二第三行的第4行開始所有替換
sed '2,3s#1#0#2g' gg.text

#sed 行數替換範圍1<N<512

實際狀況:
如何同時執行多條語句?腳本

#方法1: -e 
#刪除第2列數據 並將文件中的01所有替換成10 結果另存爲output.txt 
sed -e '2d' -e 's#01#10#g' -e 'w output.txt' test.txt

#方法2: 分號隔開
sed '2d;s#01#10#g;w output.txt' test.txt

#方法3: sed -f 接上sed腳本
cat manul.sed
#在腳本里面輸入內容:
2d
s#01#10#g
w output.txt

sed -f manul.sed test.txt

小實例:如何獲取行號文件

#先提取行號,而後對換行的地方通通替換成空格。
sed '=' test.txt | sed 'N;s#\n# #' 

# cat -n 選項
cat -n test.txt

小實例:對相同範圍作多種不一樣操做
相似乘法分配律co

sed -n '2,4{p;=}' test.txt
sed -n '2,4p;2,4=' test.txt

小實例:輸出不可見字符
l 打印文本中TAB鍵\t和行尾標誌$字符

sed -n 'l' test.txt

小實例:字符替換
y 參數 內容格式和s///或者s###一致

sed 'y/111/222/g' test.txt
tr '111' '222' < test.txt

小實例:讀取文件添加寫入
r 參數 + 要被讀取的文件名

sed 'r testb.txt' testa.txt

#在第一行添加插入
sed '1r testb.txt' testa.txt

#在最後一行添加插入,等價於文件合併
sed '$r testb.txt' testa.txt
相關文章
相關標籤/搜索