導航:首頁 > 操作系統 > linuxsed

linuxsed

發布時間:2022-05-01 14:05:42

linux sed命令


/etc/mplayer/mplayer.conf
配置文件中的
format=yuy2
用空替換(等於刪除),
然後將結果輸出到
當前用戶主目錄的
temp
文件中去.
如果要將原配置文件修改,則直接在
sed
後面添加
-i
即可後面的重定向就不需要了
>~/temp

② Linux中的sed是什麼意思呢,如何使用呢

sed命令行格式為:
sed [-nefri] 『command』 輸入文本/文件

常用選項:
-n∶取消默認的輸出,使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到屏幕上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e∶進行多項編輯,即對輸入行應用多條sed命令時使用. 直接在指令列模式上進行 sed 的動作編輯
-f∶指定sed腳本的文件名. 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作
-r∶sed 的動作支援的是延伸型正則表達式的語法。(預設是基礎正則表達式語法)
-i∶直接修改讀取的文件內容,而不是由屏幕輸出
常用命令:
a ∶ 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
c ∶ 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
d ∶ 刪除,因為是刪除,所以 d 後面通常不接任何內容
i ∶ 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行)
p∶ 列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed -n 一起用
s∶ 取代,可以直接進行替換的工作。通常這個 s 的動作可以搭配正則表達式。例如 1,20s/old/new/g

定址
定址用於決定對哪些行進行編輯。地址的形式可以是數字、正則表達式、或二者的結合。如果沒有指定地址,sed將處理輸入文件的所有行。
地址是一個數字,則表示行號;是「$"符號,則表示最後一行。例如:

sed -n '3p' datafile
只列印第三行

只顯示指定行范圍的文件內容,例如:
# 只查看文件的第100行到第200行
sed -n '100,200p' mysql_slow_query.log
地址是逗號分隔的,那麼需要處理的地址是這兩行之間的范圍(包括這兩行在內)。范圍可以用數字、正則表達式、或二者的組合表示。例如:

sed '2,5d' datafile
#刪除第二到第五行
sed '/My/,/You/d' datafile
#刪除包含"My"的行到包含"You"的行之間的行
sed '/My/,10d' datafile
#刪除包含"My"的行到第十行的內容

舉例:(假設我們有一文件名為ab)
刪除某行
[root@localhost ruby] # sed '1d' ab #刪除第一行
[root@localhost ruby] # sed '$d' ab #刪除最後一行
[root@localhost ruby] # sed '1,2d' ab #刪除第一行到第二行
[root@localhost ruby] # sed '2,$d' ab #刪除第二行到最後一行
顯示某行
. [root@localhost ruby] # sed -n '1p' ab #顯示第一行
[root@localhost ruby] # sed -n '$p' ab #顯示最後一行
[root@localhost ruby] # sed -n '1,2p' ab #顯示第一行到第二行
[root@localhost ruby] # sed -n '2,$p' ab #顯示第二行到最後一行
使用模式進行查詢
[root@localhost ruby] # sed -n '/ruby/p' ab #查詢包括關鍵字ruby所在所有行
[root@localhost ruby] # sed -n '/\$/p' ab #查詢包括關鍵字$所在所有行,使用反斜線\屏蔽特殊含義
增加一行或多行字元串
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1a drink tea' ab #第一行後增加字元串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1,3a drink tea' ab #第一行到第三行後增加字元串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
[root@localhost ruby] # sed '1a drink tea\nor coffee' ab #第一行後增加多行,使用換行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
代替一行或多行
[root@localhost ruby] # sed '1c Hi' ab #第一行代替為Hi
Hi
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1,2c Hi' ab #第一行到第二行代替為Hi
Hi
end
替換一行中的某部分
格式:sed 's/要替換的字元串/新的字元串/g' (要替換的字元串可以用正則表達式)
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替換ruby為bird
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g' #刪除ruby
插入
[root@localhost ruby] # sed -i '$a bye' ab #在文件ab中最後一行直接輸入"bye"
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
end
bye

替換:
-e是編輯命令,用於sed執行多個編輯任務的情況下。在下一行開始編輯前,所有的編輯動作將應用到模式緩沖區中的行上。
sed -e '1,10d' -e 's/My/Your/g' datafile
#選項-e用於進行多重編輯。第一重編輯刪除第1-3行。第二重編輯將出現的所有My替換為Your。因為是逐行進行這兩項編輯(即這兩個命令都在模式空間的當前行上執行),所以編輯命令的順序會影響結果。

# 替換兩個或多個空格為一個空格

sed 's/[ ][ ]*/ /g' file_name

# 替換兩個或多個空格為分隔符:

sed 's/[ ][ ]*/:/g' file_name

# 如果空格與tab共存時用下面的命令進行替換

# 替換成空格

sed 's/[[:space:]][[:space:]]*/ /g' filename

# 替換成分隔符:

sed 's/[[:space:]][[:space:]]*/:/g' filename

==============

sed命令的調用:
在命令行鍵入命令;將sed命令插入腳本文件,然後調用sed;將sed命令插入腳本文件,並使sed腳本可執行
sed [option] sed命令 輸入文件 在命令行使用sed命令,實際命令要加單引號
sed [option] -f sed腳本文件 輸入文件 使用sed腳本文件
sed腳本文件 [option] 輸入文件 第一行具有sed命令解釋器的sed腳本文件
option如下:
n 不列印; sed不寫編輯行到標准輸出,預設為列印所有行(編輯和未編輯),p命令可以用來列印編輯行
c 下一命令是編輯命令,使用多項編輯時加入此選項
f 如果正在調用sed腳本文件,使用此選項,此選項通知sed一個腳本文件支持所用的sed命令,如
sed -f myscript.sed input_file 這里myscript.sed即為支持sed命令的文件
使用重定向文件即可保存sed的輸出
使用sed在文本中定位文本的方式:
x x為一行號,比如1
x,y 表示行號范圍從x到y,如2,5表示從第2行到第5行
/pattern/ 查詢包含模式的行,如/disk/或/[a-z]/
/pattern/pattern/ 查詢包含兩個模式的行,如/disk/disks/
/pattern/,x 在給定行號上查詢包含模式的行,如/disk/,3
x,/pattern/ 通過行號和模式查詢匹配行,如 3,/disk/
x,y! 查詢不包含指定行號x和y的行
基本sed編輯命令:
p 列印匹配行 c/ 用新文本替換定位文本
= 顯示文件行號 s 使用替換模式替換相應模式
a/ 在定位行號後附加新文本信息 r 從另一個文本中讀文本
i/ 在定位行號後插入新文本信息 w 寫文本到一個文件
d 刪除定位行 q 第一個模式匹配完成後退出或立即退出
l 顯示與八進制ASCII代碼等價的控制字元 y 傳送字元
n 從另一個文本中讀文本下一行,並附加在下一行 {} 在定位行執行的命令組
g 將模式2粘貼到/pattern n/
基本sed編程舉例:
使用p(rint)顯示行: sed -n '2p' temp.txt 只顯示第2行,使用選項n
列印范圍: sed -n '1,3p' temp.txt 列印第1行到第3行
列印模式: sed -n '/movie/'p temp.txt 列印含movie的行
使用模式和行號查詢: sed -n '3,/movie/'p temp.txt 只在第3行查找movie並列印
顯示整個文件: sed -n '1,$'p temp.txt $為最後一行
任意字元: sed -n '/.*ing/'p temp.txt 注意是.*ing,而不是*ing
列印行號: sed -e '/music/=' temp.txt
附加文本:(創建sed腳本文件)chmod u+x script.sed,運行時./script.sed temp.txt
#!/bin/sed -f
/name1/ a/ #a/表示此處換行添加文本
HERE ADD NEW LINE. #添加的文本內容
插入文本: /name1/ a/ 改成 4 i/ 4表示行號,i插入
修改文本: /name1/ a/ 改成 /name1/ c/ 將修改整行,c修改
刪除文本: sed '1d' temp.txt 或者 sed '1,4d' temp.txt
替換文本: sed 's/source/OKSTR/' temp.txt 將source替換成OKSTR
sed 's//$//g' temp.txt 將文本中所有的$符號全部刪除
sed 's/source/OKSTR/w temp2.txt' temp.txt 將替換後的記錄寫入文件temp2.txt
替換修改字元串: sed 's/source/"ADD BEFORE" &/p' temp.txt
結果將在source字元串前面加上"ADD BEFORE",這里的&表示找到的source字元並保存
sed結果寫入到文件: sed '1,2 w temp2.txt' temp.txt
sed '/name/ w temp2.txt' temp.txt
從文件中讀文本: sed '/name/r temp2.txt' temp.txt
在每列最後加文本: sed 's/[0-9]*/& Pass/g' temp.txt
從shell向sed傳值: echo $NAME | sed "s/go/$REP/g" 注意需要使用雙引號
快速一行命令:
's//.$//g' 刪除以句點結尾行
'-e /abcd/d' 刪除包含abcd的行
's/[][][]*/[]/g' 刪除一個以上空格,用一個空格代替
's/^[][]*//g' 刪除行首空格
's//.[][]*/[]/g' 刪除句號後跟兩個或更多的空格,用一個空格代替
'/^$/d' 刪除空行
's/^.//g' 刪除第一個字元,區別 's//.//g'刪除所有的句點
's/COL/(.../)//g' 刪除緊跟COL的後三個字母
's/^////g' 刪除路徑中第一個/
///////////////////////////////////////////////////////////////////////
、使用句點匹配單字元 句點「.」可以匹配任意單字元。「.」可以匹配字元串頭,也可以是中間任意字元。假定正在過濾一個文本文件,對於一個有1 0個字元的腳本集,要求前4個字元之後為X C,匹配操作如下:. . . .X C. . . .
2、在行首以^匹配字元串或字元序列 ^只允許在一行的開始匹配字元或單詞。在行首第4個字元為1,匹配操作表示為:^ . . . 1
3、在行尾以$匹配字元串或字元 可以說$與^正相反,它在行尾匹配字元串或字元, $符號放在匹配單詞後。如果在行尾匹配單詞j e t 0 1,操作如下:j e t 0 1 $ 如果只返回包含一個字元的行,操作如下:^ . $
4、使用*匹配字元串中的單字元或其重復序列 使用此特殊字元匹配任意字元或字元串的重復多次表達式。
5、使用/屏蔽一個特殊字元的含義 有時需要查找一些字元或字元串,而它們包含了系統指定為特殊字元的一個字元。如果要在正則表達式中匹配以* . p a s結尾的所有文件,可做如下操作:/ * / . p a s
6、使用[]匹配一個范圍或集合 使用[ ]匹配特定字元串或字元串集,可以用逗號將括弧內要匹配的不同字元串分開,但並不強制要求這樣做(一些系統提倡在復雜的表達式中使用逗號),這樣做可以增 加模式的可讀性。使用「 -」表示一個字元串范圍,表明字元串范圍從「 -」左邊字元開始,到「 -」右邊字元結束。假定要匹配任意一個數字,可以使用:[ 0 1 2 3 4 5 6 7 8 9 ] 要匹配任意字母,則使用:[ A - Z a - z ]表明從A - Z、a - z的字母範圍。
7、使用/{/}匹配模式結果出現的次數 使用*可匹配所有匹配結果任意次,但如果只要指定次數,就應使用/ { / },此模式有三種形式,即:
pattern/{n/} 匹配模式出現n次。
pattern/{n,/} 匹配模式出現最少n次。
pattern/{n,m} 匹配模式出現n到m次之間,n , m為0 - 2 5 5中任意整數。
匹配字母A出現兩次,並以B結尾,操作如下:A / { 2 / } B匹配值為A A B 匹配A至少4次,使用:A / { 4 , / } B

===============
替換單引號為空:
可以這樣寫:
sed 's/'"'"'//g'

sed 's/'\''//g'

③ Linux sed命令使用!

[root@www ~]# sed [-nefr] [動作]
選項與參數:
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到終端上。但如果加上 -n 參數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內, -f filename 則可以運行 filename 內的 sed 動作;
-r :sed 的動作支持的是延伸型正規表示法的語法。(默認是基礎正規表示法語法)
-i :直接修改讀取的文件內容,而不是輸出到終端。

動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』

function:
a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
c :取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

④ 關於Linux里的sed命令。

Sed
is
a
nondestructive
editor.
It
will
display
the
edits
you
make
on
your
screen,
but
it
will
not
change
the
file
you
are
editing.
To
really
reflect
the
edits
in
the
file,
you
must
redirect
the
output
to
another
file,
and
then
rename
the
orginal
file
sed的特點就是非破壞(nondestructive),流水行(streamlined),非交互(noninteractive)的編輯器。
非破壞就是指不會修改原文件,它會將修改的結果標准輸出到屏幕上,你如果想保存,需要使用IO重定向的方式保存:
如:
sed
『s/home/home1』
1.txt
>2.txt
這樣做的原因是,如果你修改了原文件的話,你沒法使用word,vim,txt的undo功能撤銷修改,恢復原來的文件。所以,sed會將修改之後的文件輸出到屏幕,你看到修改滿意的話,再重定向到其他文件。就完成了修改。明白否?
-e是啟用多行命令
上述兩條編輯命令都是一行命令,所以看不出效果。

⑤ linux sed命令

前面部分引用了變數 而你這句並沒展示出你引用的變數
簡單地說 你就是對前面變數的篩選匹配
希望可以幫助你 請採納

⑥ linux下sed使用

一、Sed簡介 Sed:Stream Editor 流式編輯器 又稱行編輯器,每次只編輯一行。Sed工作是在“模式空間”中進行的,並不操作源文件。對源文件無危害。 二、Sed使用格式 Sed命令的常用格式如下: (1)Sed [options] ‘script’ input_file… (2)Sed [options] –f script_file input_file… (3)Sed [options] ‘ADDR1,ADDR2command’ input_file… 例如:#sed ’1,2d’ fstab 就可以將fstab的前兩行刪除並顯示出來,但是它不會改變源文件。 #Sed ‘1,2!d’ fstab 表示刪除除第一行和第二行之外的所有行。 (4)Sed [options] ‘/PATTERN/command’ input_file…… &:s/l..e/&er/:表示引用前面匹配到的所有字元。 例如:sed ‘/[[:upper:]]/d’ binary.sh 表示刪除所有的大寫字母的行。 (5)Sed ‘/PATTERN1/,/PATTERN2/command’ input_file…… 說明:這表示從第一次被PATTERN1匹配到的行到第一次被PATTERN2匹配到的中間的所有行執行command命令。 三、Sed的常用選項: -n:只顯示sed匹配到的行。其餘行不顯示。下文有範例。 -i :可以直接操作原文件。默認情況下sed不會改變原文件,但是-i選項可以修改原文件,此選項應慎用。 -r:可以使用標准正則表達式。默認情況下sed只支持基本正則表達式,但是加上-r選項後則支持擴展正則表達式 -e:多腳本共用。可以同時執行多個命令。例如: 代碼如下: [root@localhost ~]# sed -e 's@@H1@g' -e 's@(l..e).@1r.@g' test He love His lover. She like Her liker. Dove love Her liker. 也可以這樣用,中間用分號隔開: 代碼如下: [root@localhost ~]# sed 's@@H1@g;s@(l..e).@1r.@g' test 四、使用示例 代碼如下: #sed -e 命令行處理 -a 新增 > sed -e '$ a wiu' test.txt #在test.txt的結尾處添加wiu 代碼如下: # 把-e換成-n > sed -n '$ a wiu' test.txt # 只顯示被處理的一行 代碼如下: # -c 替換多少行 為你制定的字元串,這里我的test.txt內容如圖 > sed -e '2,5c xiaowei' test.txt #把2-5行替換成字元串xiaowei 代碼如下: # 多命令執行 -e > sed -e '2,5c xiaowei' -e 's/cccc/wiu/' test.txt 代碼如下: # -i 不輸出 -s 替換 >sed -i 's/111111/wiu/g' test.txt 代碼如下: # i 插入 自定義的字元串 在test.txt的第二行插入xiaowei > sed -e '2i xiaowei' test.txt 代碼如下: # d 刪除輸入任何字元串 > sed -e '2d' test.txt #刪除第二行

⑦ linux中如何用sed命令列印行號:內容

sed = 文件名 | sed 'N;s/\n/:/' | sed -n '/顯示行包含的關鍵字/p',例子:
假設我有文件test,內容為:
Bai123
ppppqqqq
bAi567
a.此時我想把含有的行以 "行號:該行完整內容"的形式輸出,則只需要執行:
sed = test | sed 'N;s/\n/:/' | sed -n '//Ip' //最後p前面的是大寫的I
得到結果為:
1:Bai123
3:bAi567
*.忽略大小寫,還有一個比較笨的方法,使用[],將關鍵字的所有字母的大小寫都包括了,就來例來說,/[bB][aA][iI][dD][uU]/
b.輸出所有的行,不使用關鍵字過濾行,則只需要去掉最後一部分,即:
sed = test | sed 'N;s/\n/:/'
得到結果為:
1: Bai123
2:ppppqqqq
3bAi567
完!
---------------------------------------------
grep解決這個問題比較好吧,假設有文件test,內容為:
Bai123
ppppqqqq
bAi567
如果我想得到格式如 line: line_content這種格式內容的話:
grep -ni "" test
結果為:
1:Bai123
3:bAi567

⑧ Linux裡面sed和awk命令哪個重要

你好很高興回答您的問題:

  1. 既然接觸到了三劍客的sed和awk,對Linux應該是有些認知了吧.下面基於這個給您介紹下.

  2. Linux的秘籍三劍客 grep,sed,awk是Linux命令,甚至是shell編程部分的核心技術.

  3. 掌握與數量可以加速處理文本速度.

    1. grep擅長過濾與正則

    2. sed擅長替換與增刪改查

    3. awk擅長統計計算與取行取列

  4. 快收下下面的寶典修煉吧.

⑨ Linux中sed命令同awk命令有什麼區別呢,具體該如何使用呢

sed 多用來編輯修改
awk 多用來列印
sed grep awk 俗稱三劍客
使用上sed 和 awk擴展下來,內容可多了,甚至awk可以被當作一種腳本工具,單獨出書,sed簡單的用法增刪改查都是可以直接網路到的,awk的列印也是。
例如 sed中
s 替換
sed 's/zhangsan/lisi/' yourfile 就是將zhangsan替換為lisi ,列印不執行
加上i後才真正執行 sed -i 's/zhangsan/lisi/' yourfile
d 刪除
sed '/zhangsan/d' yourfile
sed -i '/zhangsan/d' yourfile
a 追加
sed -i '/zhangsan/alisi' yourfile
i 前插

sed -i '/zhangsan/ilisi' yourfile
p 列印
sed -n '/zhangsan/p' yourfile
因為它本身也會列印一般,所以加 -n 不默認列印

awk
-F 指定分隔符
awk -F ':' '/^root/{print $7}' /etc/passwd
列印以 root開頭所在行,以「:」為分隔符,列印第七列
其效果就是列印了root的shell
純手打,望採納,謝謝,遇到具體問題仍可繼續交流

⑩ Linux中的sed是什麼意思呢,簡單解釋一下啊

Sed是一項Linux指令,全稱是Stream
EDitor,功能同awk類似,差別在於,sed簡單,對列處理的功能要差一些,awk的功能復雜,對列處理的功能比較強大。Sed主要用於自動編輯一個或者多個文件,多用於腳本中對文件的處理。
Sed命令可以對文件進行增加、刪除、修改和查找操作,所以學好sed命令是寫自動化腳本必須的基礎之一。

閱讀全文

與linuxsed相關的資料

熱點內容
usb藍牙android 瀏覽:405
伺服器顯示error1什麼意思 瀏覽:708
python代碼精簡 瀏覽:457
文件加密了怎麼找到了 瀏覽:193
jellyfin插件怎麼選擇主伺服器 瀏覽:836
asp用戶注冊源碼 瀏覽:48
什麼是照片壓縮文件 瀏覽:392
java調用js代碼 瀏覽:979
崑山市民app怎麼修改身份信息 瀏覽:779
php登陸次數 瀏覽:744
python字元轉成數字 瀏覽:822
海川用的是什麼伺服器 瀏覽:376
口才是練出來的pdf 瀏覽:458
雲伺服器哪個公司性價比高 瀏覽:517
源碼論壇打包 瀏覽:558
php怎麼做成word 瀏覽:692
python批量生成密鑰 瀏覽:492
程序員要不要考社區人員 瀏覽:150
app的錢怎麼充q幣 瀏覽:814
android銀行卡識別 瀏覽:757