Linux sed 打印模式空间p命令使用案例
生活随笔
收集整理的這篇文章主要介紹了
Linux sed 打印模式空间p命令使用案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ? Linux sed p命令使用案例
聲明與簡介
sed:Stream Editor文本流編輯,sed是一個“非交互式的”面向字符流的編輯器。
本文主要以實際的數據來介紹sed的print pattern space(打印模式空間)即p命令的使用。
數據說明
數據參考至SQL案例_0_員工表數據集。這里用的是員工表emp,結構為(員工號、員工的姓名、崗位、領導編號、雇傭日期、工資、獎金、部門編號)。當前該數據保持在emp.txt內。
# 如下是使用的示例文本數據,這里的行號是為了方便解釋結果,不是數據內容。1 7369,smith,clerk,7902,'1980-12-17',800,null,202 7499,allen,salesman,7698,'1981-2-20',1600,300,303 7521,ward,salesman,7698,'1981-2-22',1250,500,304 7566,jones,manager,7839,'1981-4-2',2975,null,205 7654,martin,salesman,7698,'1981-9-28',1250,1400,306 7655,jack,manager,7698,'1987-3-28',1600,1800,107 7656,tim,clerk,7902,'1982-12-12',1400,1400,308 7657,kate,clerk,7902,'1989-11-11',1400,1800,109 7698,blake,manager,7839,'1981-5-1',2850,null,3010 7699,dlake,salesman,7839,'1983-6-15',3000,null,1011 7782,clark,manager,7839,'1981-1-9',2450,null,1012 7788,scott,analyst,7566,'1982-12-9',3000,null,2013 7839,king,president,null,'1981-11-17',5000,null,1014 7844,turner,salesman,7698,'1981-12-8',1500,0,3015 7876,adams,clerk,7788,'1983-1-12',1100,null,2016 7900,james,clerk,7698,'1981-12-3',950,null,301718 --7902,ford,analyst,7566,'1981-12-3',3000,null,201920 7934,miller,clerk,7782,'1982-1-23',1300,null,10p命令
P命令即是print pattern space(打印模式空間),它是一塊活動緩沖區,在sed編輯器執行命令時,它會保存sed編輯器要檢驗的文本。
顯示文本內容
# 1 打印模式空間,文件內容會重復顯示(每行內容顯示2遍) sed 'p' filename # 示例,打印空間模式顯示文件內容。 sed 'p' emp.txt# 2 正常顯示文件內容,這里n參數是取消自動打印模式空間和參數--quiet、--silent等同。 sed -n 'p' filename # 顯示文件實際內容,加了-n參數。 sed –n 'p' emp.txt指定范圍顯示
# 1 顯示行號n1到n2的內容 sed -n 'n1,n2 p' filename # 示例,即指定了行號3和5之間的文本內容,結果如下,可對比原始的數據行號查驗。 sed -n '3,5 p' emp.txt 7521,ward,salesman,7698,'1981-2-22',1250,500,30 7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30# 2 顯示行號n1到文末的內容,這里的$指末尾 sed -n 'n1,$ p' filename # 示例,即顯示從16行到文末的內容。 sed -n '16,$ p' emp.txt 7900,james,clerk,7698,'1981-12-3',950,null,30--7902,ford,analyst,7566,'1981-12-3',3000,null,207934,miller,clerk,7782,'1982-1-23',1300,null,1# 3 以+(加號)匹配文件從n1行到n1+n行的內容。 sed -n 'n1,+n p' filename # 示例,匹配第4行到(4+3)7行之間的內容,可對照原始數據核驗。 sed -n '4,+3 p' emp.txt #結果見 7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7656,tim,clerk,7902,'1982-12-12',1400,1400,30# 4 以(~)波浪線匹配行號,以n1作為行號的開始、n2為間隔遞增方式匹配行號顯示內容。 sed -n 'n1~n2 p' filename # 示例,以第3行開始,每過4行遞增即對應行3,7,11,15,19的內容。 sed -n '3~4 p' emp.txt 7521,ward,salesman,7698,'1981-2-22',1250,500,30 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7782,clark,manager,7839,'1981-1-9',2450,null,10 7876,adams,clerk,7788,'1983-1-12',1100,null,20模式匹配
# 1 匹配文件內含word的內容。 sed -n '/word/ p' emp.txt # 示例,匹配文本中所有含“clerk“關鍵字的數據。 sed -n '/clerk/ p' emp.txt 7369,smith,clerk,7902,'1980-12-17',800,null,20 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7876,adams,clerk,7788,'1983-1-12',1100,null,20 7900,james,clerk,7698,'1981-12-3',950,null,30 7934,miller,clerk,7782,'1982-1-23',1300,null,10# 2 指定行號匹配文件內含關鍵字word對應的內容 sed -n '/word/,n p' emp.txt#這里先做幾個約定: # 1定義3個變量:首次匹配word的行號f、最后匹配word的行號l、參數行號n。 # 2 這里遍歷的關鍵字是”manager”即尋找所有的經理們。 # 3 由假設1和2則f是4,l是11。# 示例 2_1 n小于f的情況,結合當前情況和數據,這里n取2。這時我們不難發現返回的結果是僅匹配“manager“的內容。 sed -n '/manager/,2 p' emp.txt 7566,jones,manager,7839,'1981-4-2',2975,null,20 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7782,clark,manager,7839,'1981-1-9',2450,null,10# 示例 2_2 如果n>f且n<l, # 不難發現即有第4到10行內容和10行后僅匹配“manager“的內容匯總而來。 # 即這種情況下的文本內容由f行到n行的內容和n行后僅匹配manager的行兩部分組成。 sed -n '/manager/,10 p' emp.txt7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7699,dlake,salesman,7839,'1983-6-15',3000,null,10 7782,clark,manager,7839,'1981-1-9',2450,null,10# 示例 2_3 如果 n>=l,數據來自行4和13之間,即內容是f行到n行。 sed -n '/manager/,13 p' emp.txt7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7699,dlake,salesman,7839,'1983-6-15',3000,null,10 7782,clark,manager,7839,'1981-1-9',2450,null,10 7788,scott,analyst,7566,'1982-12-9',3000,null,20 7839,king,president,null,'1981-11-17',5000,null,10# 3 匹配文件內首次含word行到文件的末尾之間的內容. sed -n '/word/,$ p' emp.txt # 示例,即匹配首次出現“manager“的行到文件末尾的所有內容。 sed -n '/manager/,$ p' emp.txt 7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7699,dlake,salesman,7839,'1983-6-15',3000,null,10 7782,clark,manager,7839,'1981-1-9',2450,null,10 7788,scott,analyst,7566,'1982-12-9',3000,null,20 7839,king,president,null,'1981-11-17',5000,null,10 7844,turner,salesman,7698,'1981-12-8',1500,0,30 7876,adams,clerk,7788,'1983-1-12',1100,null,20 7900,james,clerk,7698,'1981-12-3',950,null,30--7902,ford,analyst,7566,'1981-12-3',3000,null,207934,miller,clerk,7782,'1982-1-23',1300,null,10# 4 匹配兩個關鍵詞word1、word2之間的內容,當word1、word2出現多次時,按照word1、word2對進行匹配。 sed -n '/word1/,/word2/ p' emp.txt # 示例 #sed -n '/manager/,/salesman/ p' emp.txt 7566,jones,manager,7839,'1981-4-2',2975,null,20 7654,martin,salesman,7698,'1981-9-28',1250,1400,30 7655,jack,manager,7698,'1987-3-28',1600,1800,10 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7699,dlake,salesman,7839,'1983-6-15',3000,null,10 7782,clark,manager,7839,'1981-1-9',2450,null,10 7788,scott,analyst,7566,'1982-12-9',3000,null,20 7839,king,president,null,'1981-11-17',5000,null,10 7844,turner,salesman,7698,'1981-12-8',1500,0,30#以manager、salesman成對匹配,匹配過程中有manager的以普通內容處理。詳細解釋見下圖: # 5 匹配兩個關鍵詞word所在行和隨后的n行內容。 sed -n '/word/,+n p' filename # 示例,以clerk為關鍵字匹配,并輸出匹配行和隨后的2行。 sed -n '/clerk/,+2 p' emp.txt 7369,smith,clerk,7902,'1980-12-17',800,null,20 7499,allen,salesman,7698,'1981-2-20',1600,300,30 7521,ward,salesman,7698,'1981-2-22',1250,500,30 7656,tim,clerk,7902,'1982-12-12',1400,1400,30 7657,kate,clerk,7902,'1989-11-11',1400,1800,10 7698,blake,manager,7839,'1981-5-1',2850,null,30 7876,adams,clerk,7788,'1983-1-12',1100,null,20 7900,james,clerk,7698,'1981-12-3',950,null,307934,miller,clerk,7782,'1982-1-23',1300,null,10總結
以上是生活随笔為你收集整理的Linux sed 打印模式空间p命令使用案例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学西点大概要多久需要多少钱 既好找工作还
- 下一篇: 支付宝余额里面的冻结金额怎么才能取出来