1. 程式人生 > >sed命令基本用法

sed命令基本用法

sed是一個非互動式文字編輯器,它可對文字檔案和標準輸入進行編輯
sed 適用於以下三種場合
編輯相對互動式文字編輯器而言太大的檔案
編輯命令太複雜,在互動式文字編輯器中難以輸入的情況
對文字掃描一遍,但是需要執行多個編輯函式的情況
sed只對緩衝區中原始檔案的副本進行編輯,並不編輯原始的檔案,因此如果需要儲存改動的內容,需要將輸出重定向到另一個檔案

sed命令選項及其意義
-n --不列印所有的行到標準輸出
-e --表示將下一個字串解析為sed編輯命令,如果只傳遞一個編輯命令給sed,-e可以省略
-f --表示正在呼叫sed指令碼檔案

sed命令選項的一組例子
將第一行內容打印出來
sed -n '1p' dwa_m_excel_dura_aggr_prop.log
將第一行取出來,並重定向到dim_ia_test.log檔案中
sed -n '1p' dwa_m_excel_dura_aggr_prop.log > dim_ia_test.log
將第3~6行內容打印出來
sed -n '3,6p' dwa_m_excel_dura_aggr_prop.log
將包含application的行打印出來(這裡大小寫是敏感的)
sed -n '/application/p' dwa_m_excel_dura_aggr_prop.log
將包含application的行號打印出來(這裡大小寫是敏感的)
sed -n '/application/=' dwa_m_excel_dura_aggr_prop.log
將包含application的行號和行內容打印出來(這裡大小寫是敏感的),當多個編輯命令同時實現時,加-e
sed -n -e '/application/=' -e '/application/p'  dwa_m_excel_dura_aggr_prop.log
sed追加文字,在instead.後面追加we append a new line.內容
sed '/instead./a\we append a new line.' dim_ia_test.log

sed追加文字,使用-f : cat append.sed

#!/bin/sed -f
#instead.為要查詢的內容,a\表示此處換行新增文字
/instead./a\
we append a new line.\
we append another line.

 為指令碼賦可執行許可權 chmod u+x append.sed

執行指令碼:

./append.sed dim_ia_test.log

執行結果為:

 sed文字定位的一組例子

將含有.的行打印出來,'.'為元字元,需要轉義
sed -n '/\./p' dim_ia_test.log
將最後一行打印出來
sed -n '$p' dim_ia_test.log   
等價
sed -n '$'p dim_ia_test.log
將以ing結尾的行打印出來
sed -n '/.*ing/p' dim_ia_test.log
2~10行不列印,其他行打印出來
sed -n '2,10!p' dim_ia_test.log  
將含有HIVE_CONF_DIR的行到最後一行的行內容打印出來
sed -n '/HIVE_CONF_DIR/,$p' dim_ia_test.log
將第三行到含有HIVE_CONF_DIR的行的內容打印出來
sed -n '3,/HIVE_CONF_DIR/p' dim_ia_test.log 

sed基本編輯命令的一組例子