Linux三劍客——sed命令簡述
阿新 • • 發佈:2018-01-10
替換 alex 批量 圖片 ado nag 顯示 amp 第一個 Linux三劍客——sed
13.1 sed介紹
13.1 sed介紹
- sed——流編輯器(stream editor)
- sed功能與版本:處理文本文件,日誌,配置文件
增加、刪除、修改、查詢
sed --version - 語法格式:sed [選項] [sed指令] [輸入文件]
sed -i.bak ‘s#boy#girl#g‘ oldboy.txt
-i sed命令的參數
s sed命令
g 小尾巴/修飾 - sed命令執行過程
13.2 sed命令功能示例 - 等號’=‘顯示行號
sed = person.txt
- 單行-輸入行號即可
sed -n ‘3p‘ person.txt
103,Alex,COO
- 顯示多行
sed -n ‘3,6p‘ person.txt
- 包含oldboy的行
sed -n ‘/oldboy/p‘ person.txt
101,oldboy,CEO
- 顯示包含oldboy到顯示yy的行
sed -n ‘/oldboy/,/yy/p‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO - 顯示包含oldboy或yy的行
sed -nr ‘/oldboy|yy/p‘ person.txt
- 顯示不連續的行
sed -nr ‘1p;3p;4p‘ person.txt
- 文件的最後一行增加兩行
sed ‘$a106,wuxingge,UFO\n107,lee,XO‘ person.txt
#a==append 追加
echo -e ‘106,wuxingge,UFO\n107,lee,XO‘>>person.txt
cat >>person.txt <<EOF
106,wuxingge,UFO
107,lee,XO
EOF - 不顯示空行方法 !表示取反
sed ‘/^$/d‘ person.txt
sed -n ‘/^$/!p‘ person.txt
awk ‘!/^$/‘ person.txt
grep -v ‘^$‘ person.txt
- ‘s###’表示逐行替換符合條件的第一個對象
sed ‘s#1#dou#‘ person.txt
dou01,oldboy,CEO
-i.bak 表示先備份再修改
sed中雙引號內變量可以執行 - sed命令中&符號表示前面正則匹配到的內容
echo ‘123456‘|sed ‘s#.*#<&>#g‘
<123456>
echo ‘123456‘|sed -r ‘s#([0-9])#<\1>#g‘
<1><2><3><4><5><6>
echo ‘123456‘|sed ‘s#.#<&>#g‘
<1><2><3><4><5><6>
13.3 批量修改文件名
方法1-使用sed替換ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘
mv oldboy01.jpg oldboy01.avi
mv oldboy02.jpg oldboy02.avils .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘|bash
方法2-使用rename方法批量修改文件名
rename jpg avi old*.jpg
rename from to file
替換的內容 替換成什麽 替換哪些文件
13.4 使用sed命令常見的坑 - -r與-i同時使用:
-r參數在前面:-ri 正常結果
-i參數在前面:-ir 表示先把文件備份xxr,然後再替換文件中的內容 - -r與-n同時使用:會把源文件的內容清空,只顯示符合條件內容
Linux三劍客——sed命令簡述