導航:首頁 > 操作系統 > linuxsed指定行

linuxsed指定行

發布時間:2022-08-02 17:24:24

1. linux指令 sed指令怎麼選擇列

首先我這邊先建一個字母大小轉換的腳本test2.sh,內容如下:

先介紹些sed -n的應用:
sed命令中p能實現列印匹配行的功能。我們可以實際看下sed命令帶-n和不帶-n情況下有什麼不同。
sed -n "1p" test2.sh:帶-n選項的話,只列印test2.sh腳本第一行匹配行。
sed "1p" test2.sh:不帶-n的話,不僅列印第一行匹配行,還列印輸出test2.sh腳本的全部內容。

sed -n還可以列印文件的范圍,比如列印test2.sh腳本的前兩行,我們就可以執行以下命令:sed -n "1,2p" test2.sh,就可以直接列印前兩行。
sed命令可以列印匹配模式行,比如列印test2.sh腳本匹配tr的行,就可以執行以下命令:
sed -n /tr/p test2.sh。
remark:如果不帶-n的話,除了列印匹配行外,還會列印腳本的全部內容。

sed -e的應用。只有當sed命令傳遞多個編輯命令式,才會使用到-e。比如:我想列印/tr/匹配行,並且列印匹配行所在的行號,此時存在多個sed參數,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每個參數前都要帶上-e:

sed a\追加命令,命令格式為:sed 』指定地址a\追加內容『 目標文件
這個追加內容在匹配行的下一行,只會輸出到標准輸出,原文件內容是不變的,例如在test2.sh腳本的/tr/所在的匹配行的下一行添加「#hello」內容,可需要執行:
sed '/tr/a\#hello' test2.sh
一定不要忘記單引號.
還有一個sed i\的追加命令,命令格式為:sed 』指定地址i\追加內容『 目標文件,跟a\不同,i\追加是在指定位置的上一行追加命令

sed命令中還有一些特殊的匹配,比如元字元匹配,此時需要用轉義符"\"屏蔽其特殊意義。
比如:sed -n 『/\=/p』test2.sh,則列印輸出tr一行。
$在正則表達式中表示尾行,執行sed -n 『$p』 test2.sh則列印腳本尾行。
!表示取反,可以看以下兩個例子

sed中可以使用關鍵字來匹配行,列印我們所需要的內容,比如,我希望列印test2.sh第2,3行,可以執行:sed -n "2,3P" test2.sh,也可以執行sed -n "/tr/,/exit/p" test2.sh

sed c\的應用,命令格式為:sed 』指定地址c\替換內容『 目標文件。比如,#hello,替換test2.sh腳本的tr這行,可以執行命令:sed '/tr/c\#hello' test2.sh

sed刪除d應用:比如我想刪除test2.sh的第2行,可以執行以下命令:sed "2d" test2.sh或者sed /tr/d test2.sh

sed替換s應用:格式 sed s/被替換的字元/替換字元/[替換選項]
比如,我想把test2.sh中tr替換成大寫的tr,則可以執行以下命令:sed 『s/tr/TR/』test2.sh,則把腳本中的tr替換成TR,完後輸出全部內容。
如果僅想列印替換所在行,則需要試用使用-n和-p:sed -n 『s/tr/TR/p』 test2.sh:把腳本中的tr替換成TR,然後列印tr所在的行.
如果腳本中存在好幾個tr,並且每一行也存在多個tr,如果執行以上命令的話,只會更改每一行的第一個出現的tr,如果要全部把tr轉後為TR,則需要添加G參數:
sed -n 』S/tr/TR/pg』test2.sh。
w參數是定向輸入參數,比如要把上述的變更定向輸出到test1.txt中,則需要執行:
sed -n 』s/tr/TR/pgw test1.txt』 test2.sh。
也可以直接把選定的匹配內容寫到另一個文本中,比如想把test2.sh中tr這一樣寫到test2.txt中,執行:sed -n 』/tr/w test2.txt『 test2.sh

2. linux命令怎麼顯示文件某一行或幾行內容

sed-n4,8pfile#列印file中的4-8行
sed-n4pfile#列印file中的第4行

3. sed 取特定行 到末尾行

1、通常用sed關閉SELINUXsed -i 's@SELINUX=enforcing@SELINUX=disabled@' /etc/sysconfig/selinux 將enforcing替換成disabled。

4. linux中sed中的動作i和a的區別

linux中sed中的動作i是插入,i的後面可以接字元串,該字元串會在當前指定行的上一行出現。a是添加a的後面可以接字元串,該字元串會在當前指定行的下一行出現。

5. Linux:刪除某文件中的指定行,求解

[root@localhost~]#catfile

servicetomcatrestartping

10.0.3.23

echo"demo">>/usr/local/text

servicentpdrestart

[root@localhost~]#grep-v'echo"demo">>/usr/local/text'file

servicetomcatrestartping

10.0.3.23

servicentpdrestart

重新輸出到文件就好了。

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

7. (急急急)LINUX下利用sed刪除指定行,指定行的起始位置是通過參數獲取的,結束位置是文件最後。如何刪除

sed $i',$d' input

i是shell變數,需要拿到sed作用域外面來(即單引號外面)才能被正確解析。或者更簡單的方式,單引號改為雙引號。
另外,如果想直接修改文件,需要使用sed 的-i 選項,即 sed -i $i',$d' input

8. 問在LINUX中 如何用sed將整行替換成給定字元串

①.將第99行替換為「abc」:
sed
'99cabc'
filename
註:99c代表第99行

②.
將包含"123"的行替換為"abc」:
sed
's/.*123.*/abc/'
filename

如果滿意記得採納答案,謝謝!

閱讀全文

與linuxsed指定行相關的資料

熱點內容
vb編程10個隨機函數 瀏覽:19
程序員個人簡介100 瀏覽:770
土木工程師演算法工程師 瀏覽:90
javaexcel導入oracle 瀏覽:877
如何設置異地伺服器 瀏覽:882
為什麼安卓手機藍牙耳機不會彈窗 瀏覽:546
linuxf77編譯器安裝教程 瀏覽:949
android本地錄音許可權 瀏覽:446
加密u盤內容怎麼拷貝 瀏覽:283
安卓手機為什麼看不到iso文件 瀏覽:582
用圖片做文件夾圖標 瀏覽:693
java正則表達式語法 瀏覽:865
美圖秀在線壓縮圖片 瀏覽:184
蘋果自帶控制app是什麼 瀏覽:907
孩子學編程怎麼樣 瀏覽:589
網路編程經典書籍 瀏覽:612
曲靖創建網站java程序員 瀏覽:690
256位加密中是什麼意思 瀏覽:97
php多維數組去重 瀏覽:308
做程序員這一行儲備人才怎麼看 瀏覽:462