sed 文本常用操作方式
sed 10q # 顯示文件中的前10行 (模擬"head")
sed -n '$=' # 計算行數(模擬 "wc -l")
sed -n '5,/^no/p' # 打印從第5行到以no開頭行之間的所有行
sed -i "/^$f/d" a # 刪除匹配行
sed -i '/aaa/,$d' # 刪除匹配行到末尾
sed -i "s/=/:/" c # 直接對文本替換
sed -i "/^pearls/s/$/j/" # 找到pearls開頭在行尾加j
sed -n '1,3p' file # 打印1和3之間的行
sed -n '1p' 文件 # 取出指定行
sed '5i\aaa' file # 在第5行之前插入行
sed '5a\aaa' file # 在第5行之後抽入行
echo a|sed -e '/a/i\b' # 在匹配行前插入一行
echo a|sed -e '/a/a\b' # 在匹配行後插入一行
echo a|sed 's/a/&\nb/g' # 在匹配行後插入一行
seq 10| sed -e{1,3}'s/./a/' # 匹配1和3行替換
sed -n '/regexp/!p' # 只顯示不匹配正則表達式的行
sed '/regexp/d' # 只顯示不匹配正則表達式的行
sed '$!N;s/\n//' # 將每兩行連接成一行
sed '/baz/s/foo/bar/g' # 只在行中出現字串"baz"的情況下將"foo"替換成"bar"
sed '/baz/!s/foo/bar/g' # 將"foo"替換成"bar",並且只在行中未出現字串"baz"的情況下替換
echo a|sed -e 's/a/#&/g' # 在a前面加#號
sed 's/foo/bar/4' # 只替換每一行中的第四個字串
sed 's/\(.*\)foo/\1bar/' # 替換每行最後一個字符串
sed 's/\(.*\)foo\(.*foo\)/\1bar\2/' # 替換倒數第二個字符串
sed 's/[0-9][0-9]$/&5/' # 在以[0-9][0-9]結尾的行後加5
sed -n ' /^eth\|em[01][^:]/{n;p;}' # 匹配多個關鍵字
sed -n -r ' /eth|em[01][^:]/{n;p;}' # 匹配多個關鍵字
echo -e "1\n2"|xargs -i -t sed 's/^/1/' {} # 同時處理多個文件
sed '/west/,/east/s/$/*VACA*/' # 修改west和east之間的所有行,在結尾處加*VACA*
sed 's/[^1-9]*\([0-9]\+\).*/\1/' # 取出第一組數字,並且忽略掉開頭的0
sed -n '/regexp/{g;1!p;};h' # 查找字符串並將匹配行的上一行顯示出來,但並不顯示匹配行
sed -n ' /regexp/{n;p;}' # 查找字符串並將匹配行的下一行顯示出來,但並不顯示匹配行
sed -n 's/\(mar\)got/\1ianne/p' # 保存\(mar\)作為標籤1
sed -n 's/\([0-9]\+\).*\(t\)/\2\1/p' # 保存多個標籤
sed -i -e '1,3d' -e 's/1/2/' # 多重編輯(先刪除1-3行,在將1替換成2)
sed -e 's/@.*//g' -e '/^$/d' # 刪除掉@後面所有字符,和空行
sed -n -e "{s/文本(正則)/替換的內容/p}" # 替換並打印出替換行
sed -n -e "{s/^ *[0-9]*//p}" # 打印並刪除正則表達式的那部分內容
echo abcd|sed 'y/bd/BE/' # 匹配字符替換
sed '/^#/b;y/y/P/' 2 # 非#號開頭的行替換字符
sed '/suan/r 讀入文件' # 找到含suan的行,在後面加上讀入的文件內容
sed -n '/no/w 寫入文件' # 找到含no的行,寫入到指定文件中
sed '/regex/G' # 在匹配式樣行之後插入一空行
sed '/regex/{x;p;x;G;}' # 在匹配式樣行之前和之後各插入一空行
sed 'n;d' # 刪除所有偶數行
sed 'G;G' # 在每一行後面增加兩空行
sed '/^$/d;G' # 在輸出的文本中每一行後面將有且只有一空行
sed 'n;n;n;n;G;' # 在每5行後增加一空白行
sed -n '5~5p' # 只打印行號為5的倍數
seq 1 30|sed '5~5s/.*/a/' # 倍數行執行替換
sed -n '3,${p;n;n;n;n;n;n;}' # 從第3行開始,每7行顯示一次
sed -n 'h;n;G;p' # 奇偶調換
seq 1 10|sed '1!G;h;$!d' # 倒敍排列
ls -l|sed -n '/^.rwx.*/p' # 查找屬主權限為7的文件
sed = filename | sed 'N;s/\n/\t/' # 為文件中的每一行進行編號(簡單的左對齊方式)
sed 's/^[ \t]*//' # 將每一行前導的"空白字符"(空格,製表符)刪除,使之左對齊
sed 's/^[ \t]*//;s/[ \t]*$//' # 將每一行中的前導和拖尾的空白字符刪除
sed '/{abc,def\}\/\[111,222]/s/^/00000/' # 匹配需要轉行的字符: } / [
echo abcd\\nabcde |sed 's/\\n/@/g' |tr '@' '\n' # 將換行符轉換為換行
cat tmp|awk '{print $1}'|sort -n|sed -n '$p' # 取一列最大值
sed -n '{s/^[^\/]*//;s/\:.*//;p}' /etc/passwd # 取用户家目錄(匹配不為/的字符和匹配:到結尾的字符全部刪除)
sed = filename | sed 'N;s/^/ /; s/ *\(.\{6,\}\)\n/\1 /' # 對文件中的所有行編號(行號在左,文字右端對齊)
/sbin/ifconfig |sed 's/.*inet addr:\(.*\) Bca.*/\1/g' |sed -n '/eth/{n;p}' # 取所有IP
刪除第一行、最後一行或增加刪除某行
1、刪除文檔的第一行
sed -i '1d' test.txt
2、刪除文檔的最後一行
sed -i '$d' test.txt
3、在文檔指定行中增加一行
例如文檔如下:
echo "1";
echo "2";
echo "4";
echo "5";
# 在echo "2"行 後 添加 一行 echo "3";
sed -i '/echo "2";/a echo "3";' test.txt
# 在echo "2"行 前 添加 一行 echo "5"
sed -i '/echo "2";/i echo "5"' test.txt
格式:
sed -i '/字符 /a 新字符' test.txt
4、刪除文件中的第3行
sed -i '3d' test.txt
5、刪除文件中包含某個關鍵字開頭的所有行
sed -i '/^QWQ/d' test.txt
6、刪除文件中包含某個關鍵字 QWQ 的所有行
sed -i '/QWQ/d' test.txt
7、每行 首行 添加字符
sed -i 's/^/2/' test.txt
刪除 首行 字符
sed -i 's/^2//' test.txt
8、每行 行尾 添加字符
sed -i 's/$/2/' test.txt
刪除 行尾 字符
sed -i 's/2$//' test.txt
sed 's///g' 與sed 's///' 的區別
+g :匹配每一行有行首到行尾的所有字符
不加g 配每一行的行首開始匹配,匹配到第一個符合的字段
9、 打印第一行第一個字符不包含空白
cat -A /var/spool/cron/root | awk -F '' '{print $1}'
10、刪除 指定關鍵字 name 行 後五行
sed -i '/name/,+5d' file.txt
sed 匹配行內字符變更
sed -i '1i\111' file
# 第一行之前添加
sed -i '1a\111' file
# 第一行之後添加
1、特殊字符前添加
sed -i "s/111/222&/g" test.txt
# 在 111 字符前 加 222
sed -i "s/111/&222/" test.txt
# 在 111 字符後 加 222
sed -i "s/.*111/222&/g" test.txt
#在 包含 111 所在行的行首 添加 222
sed -i "s/111.*/222&/g" test.txt
#在 包含 111 所在行的行尾 添加 222
sed -i "/111/i\bbb" test.txt
# 在 包含 111 字符的文件所在行前 添加一行 bbb
sed -i "/111/a\bbb" test.txt
# 在 包含 111 字符的文件所在行後 添加一行 bbb
2、 匹配註釋
sed -i "s/^[^#].*restart/#&/g" test.txt
# 匹配含有 restart 的 非# 開頭的行加 # 註釋
3、匹配取消註釋
sed -i "/^#.*restart/s/^#//" /var/spool/cron/root
# 匹配含有 restart 的取消註釋
4、取消所有行首字母#
sed -i "s/^#//g" /var/spool/cron/root
查詢 打印 文件首行
find /opt/services/ -name 'changelog.txt' -exec sed -n 1p {} \;
本文章為轉載內容,我們尊重原作者對文章享有的著作權。如有內容錯誤或侵權問題,歡迎原作者聯繫我們進行內容更正或刪除文章。