Linux 刪除和替換檔案中某一行的方法 推薦

2022-09-26 14:45:19 字數 1948 閱讀 4657

如果有乙個abc.txt檔案,內容是:

aaabbbbatbusinesstype, insideid--) online;

insideid--) online

cccddd

eeefff

如果要刪除ddd,那麼指令碼可以這樣寫:

sed -i '/ddd/d' abc.txt

如果刪除的是乙個變數的值,假如變數是var,應該寫成:

sed -i '/'"$var"'/d' abc.txt

至於grep -v aaa abc.txt這個方法,是無法將修改的結果寫入abc.txt中去的。

[asp@bj-cp-7f-106-36 result]$ cat 11371_mobile_20110425.csv

20110425,北京,北京,13661189983

20110425,北京,北京,15810705979

wapsjbbi_101>

wapsjbbi_101>spooloff;

[asp@bj-cp-7f-106-36 re sed -i '/wapsjbbi_101>/d'11371_mobile_20110425.csv

[asp@bj-cp-7f-106-36 result]$ cat 11371_mobile_20110425.csv

20110425,北京,北京,13661189983

20110425,北京,北京,15810705979

從結果上看怎麼就2行都刪了呢?

答案是這樣的:

sed 後面那個/d是刪除的作用,寫成sed '/wapsjbbi_101>/d' 11371_mob程式設計客棧ile_20110425.csv其實就是在檔案11371_mobile_20110425.csv裡找到跟 「wapsjbbi_101>」匹配的行,然後刪掉。因為原文中含有「wapsjbbi_101>」的行是2個,因此就2個一口氣都刪除了。

刪除:d命令

$ sed '2d' example-----刪除example檔案的第二行。

$ sed '2,$d' example-----刪除example檔案的第二行到末尾所有行。

$ sed '$d' example-----刪除example檔案的最後一行。

$ sed '/test/'d example-----刪除example檔案所有包含test的行。

在看看以前我常寫的 's/|/,/g' aaa.txt>bbb.txt 這個的意思就是把aaa.txt檔案中所有字串|都換成,這是怎麼表示的呢?s代表字串,g表示行內全面替換。 

替換:s命令

$ sed 's/test/mytest/g' example

-----在整行範圍內把test替換為mytest。如果沒有g標記,則只有每行第乙個匹配的test被替換成mytest。

$ sed -n 's/^test/mytest/p' example

-----(-n)選項和p標誌一起使用表示程式設計客棧只列印那些發生替換的行。也就是說,如果某一行開頭的test被替換成mytest,就列印它。

$ sed 's/^192.168.0.1/&localhost/' example

-----&符號表示替換換字串中被找到的部份。所有以192.168.0.1開頭的行都會被替換成它自已加 localhost,變成192.168.0.1localhost。

$ sed -n 's/able/\1rs/p' example

-----love被標記為1,所有loveable會被替換成lovers,而且替換的行會被列印出來。

$ sed 's#10#100#g' e程式設計客棧xample

-----不論什麼字元,緊跟著s命令的都被認為是新的分隔符,所以,「#」在這裡是分隔符,代替了預設的「/」分隔符。表示把所有10替換成100。

cat init.ora | grep -v  ^#|grep –v ^*  > initprod.ora

總結本文位址:

Linux 刪除和替換檔案中某一行的方法

如果有乙個abc.txt檔案,內容是 aaabbb batbusinesstype,insideid online insideid online cccddd eeefff 如果要刪除ddd,那麼指令碼可以這樣寫 sed i ddd d abc.txt 如果刪除的是乙個變數的值,假如變數是var,...

Linux 刪除和替換檔案中某一行的方法

如果有乙個abc.txt檔案,內容是 aaa bbbbatbusinesstype,insideid online insideid online cccddd eeefff 如果要刪除ddd,那麼指令碼可以這樣寫 sed i ddd d abc.txt 如果刪除的是乙個變數的值,假如變數是var,...

Shell 指令碼逐行替換檔案中的某一引數值

替換檔案中的某個引數,通常使用linux文字處理工具,awk sed 和 grep,可根據實際需要組合使用命令。bin bash 獲取檔案,通過指令碼引數引入 file data test.log 獲取檔案的行數 log line awk f file 定義迴圈規則,檔案有多少行,就迴圈多少次 fo...