sed怎麼讀取行和列印行

2021-09-01 07:37:36 字數 1257 閱讀 9430

一、sed讀取行和列印行解析:

1.sed讀取到模式空間的行不包括\n字元;

2.sed讀取多行到模式空間時,自動以\n字元進行分隔;

3.sed列印行時並不列印以模式空間加的\n字元,而是行逐行列印除\n外的字元,然後由p或p命令新增\n字元;

4.sed預設自動列印每乙個模式空間單元,其實是隱式執行-e 'p;d'命令

誤解:1.sed讀取到模式空間的行包括\n字元;

2.sed讀取多行到模式空間時,沒有以\n字元進行分隔,而是直接讀取檔案中的\n;

3.sed列印一行時,直接列印模式空間行資料+\n;

二、分析:

1.示例檔案:

cat file

test111

222222

2.sed處理:

sed -n -e :a -e 'n;s/\n\n/\n/;ta' -e '/test/p'

基本流程是:一直讀取新行,直到找到\n\n,並替換成\n,最後刪除匹配test的行

3.誤解分析:

patt為模式空間,comm為執行命令,out為標準輸出

patt:test111\n

comm::a

comm:$!n

patt:test111\n\n

comm:s/\n\n/\n/

patt:test111

comm:ta

comm:/test/p

out:test111

patt:

patt:222222\n

comm::a

comm:$!n

comm:s/\n\n/\n/

comm:ta

comm:/test/p

out:

patt:

最終輸出結果:test111

3.正解分析:

patt:test111

comm::a

comm:$!n

patt:test111\n空

comm:s/\n\n/\n/

comm:ta

comm:/$!n

patt:test111\n\n22222

comm:s/\n\n/\n/

path:test111\n22222

comm:/test/p

out:test111\n22222

patt:

最終輸出結果:test111\n22222\n

sed之列印和刪除特定行

在如下的紅色字型中,d 是刪除,p是列印 一 列印列印奇數行 刪除偶數行 或者偶數行 刪除奇數行 1.僅列印奇數行 sed n d tmp 2.僅列印偶數行 sed n n p tmp 二 列印包含某單詞的行 sed n word p tmp 三 列印以某單詞開頭的行 sed n word p tm...

head 和 tail 和 sed 讀取檔案

tail 從後往前 f 迴圈讀取 q 不顯示處理資訊 v 顯示詳細的處理資訊 c 數目 顯示的位元組數 n 行數 顯示行數 tail file n 3 從後往前讀三行 pid pid 與 f合用,表示在程序id,pid死掉之後結束.q,quiet,silent 從不輸出給出檔名的首部 s,sleep...

sed刪除匹配行的上一行和下一行

aa string 變數指定匹配字串 sed i e aa e n n.aa p d file 例子 insert into bonusreturnorder values 47 224 1300573 2 1 wx20160203083601539373 hbtk20160204020000110...