shell腳本匹配特定字元串的下一行內容
『壹』 shell 正則匹配一條字元串並且獲取該字元串中所有匹配到的字元
1、「^」是匹配以什麼字元或字元串開頭的,匹配正確返回1,否則返回0。
注意事項:
shell也可以運源伏行在另外一種模式:非互動式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令春裂薯,並且執行它們。當它讀到文件的結尾,shell也就終止了。
『貳』 利用shell腳本如何提取一個文件中某一特定行和下面若干行的內容
一條語句搞定,假定你要找到最後一個ABC以及後面的10行,
當然這條語句能夠執行的基礎是,1.log里確實有ABC這個字元串,否則下面一條語句就會出現失敗,更好的方法是在腳本中分成兩條語句,一條語句判斷是否有ABC以及行號,第二條語句是用sed來列印。你可以自己根據下橋叢面的命令來搞定,我敏大櫻就不多說了。
sed
-n
"$(grep
-n
ABC
1.log
|
tail
-1
|
cut
-d
:
-f
1),+10p"仿薯
ABC.log
『叄』 shell sed能不能匹配指定字元串之後的第三行,新增一行
拋磚引玉
預覽:
sed-n-e'/aaa/{n;n;n;s|$| 新添加的行|p}'3hang_addline.txt
應用:
sed-i-e'/aaa/{n;n;n;s|$| 新添加的行|}'3hang_addline.txt
解釋:
n;n;n;就是從匹配的aaa往下走三行,到位後,將行尾添加換行符——新增一行, 後面就是新行的內容。
你的提問只需要兩個n,即往下走兩行,再添加新行,就行了。我審題不殲絕嚴。
可能你要問,如果我要在匹配到aaa後的1000行添加新行,難道要打1000次「n;」嗎?
我的回答是,如果數字很大,我到寧願用你沒衡提問中不想用的那個方法。
預覽:
num=`sed-n-e'/aaa/='3hang_addline.txt`;sed-n$((num+3))'s|$| 你要添加的行枯改做|p'3hang_addline.txt
應用:
num=`sed-n-e'/aaa/='3hang_addline.txt`;sed-i$((num+3))'s|$| 你要添加的行|'3hang_addline.txt
『肆』 請教shell腳本里如何進行字元串匹配
比如說傳入的參數是str
tmpstr=`echo &str|awk '{print substr($0,length($0)-1),2}'信寬 #取滑悔亮最後兩位
if [ "$tmpstr" == "aa" ];then
......
elif [ "$tmpstr" == "前御bb" ]; then
......
fi
『伍』 shell腳本怎樣提取匹配行及向下幾行的內容,行數不定
#!/bin/sed-n
:next
/^student:/{
p
:gettoend
n
p
/^$/bnext
b前姿悶gettoend
}
保存到文件code.sed中 使用 sed -f code.sed dat.txt 就可以輸出文件
但文件格慧彎式冊春必須嚴格,每個 student以空白行作為結束,結束行內沒有任何字元。建議增加一個關鍵字end 用來作為結束標記。
『陸』 linux shell怎麼查找文件中指定字元串,並把該字元串和下一行的內容寫到另一個文件中
有兩種寫入方式:
1、grep
-i
"aaa"
-A
1
1.txt
|
grep
-v
-e
"--"
>2.txt
grep 指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為「-」,則grep指令會從標准輸入設備讀取數據。
2、awk
'/aaa/{getline
var;print
$1"\n"
var}'
1.txt
>2.txt
awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
linuxshell中引號的使用方法:
shell使用引號(單引號/雙引號)和反斜線("\")用於向shell解釋器屏蔽一些特殊字元,反引號(")對shell則有特殊意義。
如:abc="how
are
you"
(bash/pdksh)
set
abc
=
"how
are
you"
(tcsh)
這個命令行把三個單片語成的字元串how
are
you作為一個整體賦值給變數abc.
abc1='@LOGNAME,how
are
you!'
(bash/pdksh)
set
abc1='$LOGNAME,how
are
you!'
(tcsh)
abc2="$LOGNAME,how
are
you!"
(bash/pdksh)
set
abc2="$LOGNAME,how
are
you!"
(tcsh)。
『柒』 請問怎麼在shell腳本中,替換文件多行裡面的指定字元串
sed-i'/aaa/{:a;n;s/123/xyz/g;/eee/!ba}'yourfile
先匹配aaa,匹配到後執行大括弧里的語句。
n 讀取下一行
s/123/xyz/g 將123替換為xyz,全局替換,同一行中出現幾次替換幾次
:a 設定跳轉標簽a
/eee/!ba 若當前行匹配不上eee,則跳轉到標簽a處繼續執行,構成一個循環。若匹配到eee,則退出循環,sed重新對讀入的每行匹配aaa。
由於sed沒有加-n靜默選項,所以默認對每行數據處理後都列印。
『捌』 linux shell命令怎麼查找文件中指定字元串,並把這個字元串所在行和下面一行的內容寫到另外一個文件中
這個問題太有想像力了,命令如下。grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txtlinux shell命令怎麼查找文件中指定字元串,並把這個字元串所在行和下面一行的內容寫到另外一個文件中?
『玖』 Shell實現以下功能: 通過關鍵詞匹配到文件某一行,並在這一行末尾追加內容。
假設文件名是1.txt
cat1.txt|grepbbbb|睜御head-1|awk'print$1,$2,dddd'
sorry看錯了你的悉悄岩需求,上面的只是把你需要的那一行列印出運凳來了,應該用sed來插入,也很簡單
sed-i's/bbbb1234/bbbb1234dddd/'1.txt
『拾』 利用shell腳本如何提取一個文件中某一特定行和下面若干行的內容
1、在linux目錄/root下建立一個txt文件,內容如下,使用|豎線分割,作為我們的實驗數據樣本。