『壹』 shell的sed用法
sed 是Unix中類似於awk的行編輯器,對於sed工具包的所有操作來說, 我們最關心的其實就是3個最主要的操作. 分別是printing(列印到stdout), deletion(刪除), 和substitution(替換). 它與awk不同的地方在於sed是非交互的編輯器,而awk是可交互的編輯器。它即可以從stdin中接收文本輸入, 也可以從文件中接收文本輸入, 它對輸入中的指定行搭謹進行特定的操作, 一行操作一次, 然後將結果輸出到stdout, 或輸出到文件中. 在shell腳本中使用的話, sed通常都是作為管道工具鏈知虛基中的一個處理部分來使用.
Sed的處理方法,上面你提到的表達式叫作「模式匹配」,是一種替換操作:
s/pattern1/pattern2/
意思是用 pattern2 替換pattern1並顯示到屏幕上。
講講echo "uid=100(guest) gid=100(others) groups=10(users),11(floppy)"|sed 's/^[^(]*(\([^)]*\).*/\1/'的意思 :
echo 是向屏幕顯示一行字元
「|」叫管道,象水管一樣把「|」前面程序產生的輸出作為「|」後的程序的輸入。
sed 行編輯器。
's/^[^(]*(\([^)]*\).*/\1/' 對應上文提到的替換參數,分成兩部分,pattern1:/^[^(]*(\([^)]*\).*/
表示以不是以「(」開始的字元後面跟任意字元,然後是貪婪匹配模式運算(),譽消任意以「(」字元開始,中間不包括")"字元的任意字元並以「)」後接。後面再接任意字元串。因為前面的程序輸出「uid=100(guest) gid=100(others) groups=10(users),11(floppy)」,所以貪婪匹配模式得到結果(guest)
pattern2:/\1/ \1是正則表達式的貪婪匹配模式運算結果。
所以shell語句輸出guest替換長長的一串「uid=100(guest) gid=100(others) groups=10(users),11(floppy)」
『貳』 Shell文本三劍客--sed
sed 是 stream editor 的縮寫,流編輯器,主要用頃敏於對標准輸出或文件進行逐行處理。
原模州文件test_sed.sh內容:
在testfile文件的第四行後添加一行,並將結果輸出到標准輸出,在命令行提示雀碼枝符下輸入如下命令:
a 動作是在匹配的行之後追加字元串,追加的字元串中可以包含換行符(實現追加多行的情況)
追加一行的話前後都不需要添加換行符 \n
追加多行
同理,指定行前插入內容
列印第3-4行
將第二行內容修改為111
搜索有root關鍵字的行
匹配有連續5位數字的行
或者
『叄』 shell腳本讀取配置文件參數
1、 讀取配置文件時,將注釋符#標記的行和空行全部過濾 sed -E '/^#.*|^ *$/d' $env_file 。
2、 匹配指定參數相符的行並截取對應的值 awk -F "${param}=" "/${param}=/{print \$2}" 。
3、 獲得的結果可能有多個,取最後一個值 tail -n1 。
4、這3步都用 | 管道兄茄符猛塵扒連接枝昌,其作用是將當前的結果作為下一條命令的輸入,連續處理以達到獲取參數的最終目的。
『肆』 求助各位大佬,shell中sed如何將時間參數作為條件進行篩選
樓主,你好:
你把那條sed語句改為:
sed -n "/$date2/旦雹p" /var/log/message-20170522
看看可以不.
如果不可以,你把你傳入shell腳本的參數以及部分log日誌文件發上來,我這邊試一下
希望對伏悄樓主有缺遲渣幫助,歡迎追問
『伍』 linux shell sed命令用法
sed替換命令的結構為: s/A/B/
你在最後少了個斜杠/,結吵沖差構不完整判納,會報升皮錯。
修改為:
A=hello
ar=$(date"+%Y%m%d")
echoA|sed"s/he/$Var/"
『陸』 關於LINUX的幾個指令尋求幫助awk、sed、grep 、vim。關於他們之間的關系,哪位用大白話指點一下迷津,不勝
vim 是文本編輯器,類似windows中的notepad,功能很強顫余大,但需要去學習、適應一段時間才能使用得手。
grep命令是一個非常實用的shell命令,其功能為查找與命令後面內容匹配或不匹配的東西,可以與沖飢各種命令混合使用,效果很好,如:
1、查看文件a.txt中有"LINUX"這個詞的所有行:grep LINUX a.txt
2、查看文件a.txt中沒有"LINUX"這個詞的所有行:grep -v LINUX a.txt
3、結合管茄判滾道命令:cat a.txt|grep LINUX (與1同),cat a.txt|grep -v LINUX (與2同)
sed、awk是兩個非常強大的shell工具(不單純是命令),他們各有超強的能力,甚至可以編程進行應用處理,關於他們的使用有專用的書介紹,內容非常多。sed多偏重於正則表達式方面的應用,實現查詢替換等操作。awk的程序處理能力顯示的更強。
『柒』 shell編程中的sed問題
line1=`sed -n -e '/^labA/=' file|head -n 2|tail -n 1`
line2=`sed -n -e '隱攔帶/^labB/=' file|head -n 2|tail -n 1`
獲取第二個匹配的灶蘆2行行號,衡衫獲取之間的數據
sed "${line1},${line2}p" file