sed匹配替換整行內(nèi)容 sed匹配出多行時(shí)如何只在第一個(gè)匹配行下方添加行?
sed匹配出多行時(shí)如何只在第一個(gè)匹配行下方添加行?預(yù)覽:sed-N-e“/AAA/{nnns |$|N new line | P}”3hangu添加行.txtsed-I-e “/AAA/{nnns |
sed匹配出多行時(shí)如何只在第一個(gè)匹配行下方添加行?
預(yù)覽:sed-N-e“/AAA/{nnns |$|N new line | P}”3hangu添加行.txtsed-I-e “/AAA/{nnns |$|n新添行|}”3hang|添加行.txt說明:NNN是從匹配的AAA往下走三行,然后在行尾添加一個(gè)新行字符。也許你想問,如果我想在匹配AAA后的1000行中添加新行,我是否需要鍵入“n”1000次?我的回答是,如果數(shù)字很大,我寧愿用你不想用的方法來提問。預(yù)覽:num=`sed-N-e“/AAA/=”3hangu添加行.txt`Sed-N$((Num 3))“s |$N要添加的行| P”3hangu添加行.txt應(yīng)用程序:num=`sed-N-e“/AAA/=”3hangu添加行.txt`Sed-I$((Num 3))“s |$ 要添加的行|”3hangu添加行.txt
sed如何替換匹配的數(shù)字?
日志文件中的一行is:ABC135你好。如果您想使用regular來查找,請(qǐng)分別使用命令egrep和sed。 問題1:在數(shù)字匹配中,D用于匹配數(shù)字,但不能將135與D匹配,只能與[0-9]匹配。問題2:egrep可以用[0-9]正則化匹配135,但是sed不能[根@livedvdlog]#egrep“abcd[0-9]你好”tmp.txt文件 abcd135hello [根@livedvdlog]#egrep“你好”tmp.txt文件 [根@livedvd日志]#sed-n“/abcd[0-9]你好/p”tmp.txt文件 [根@livedvd日志]#sed-n“/abcdd您好/p”tmp.txt文件 [根@livedvd稍后,我試圖找出D在sed中可以匹配的內(nèi)容,發(fā)現(xiàn)是字母D而不是數(shù)字[根@livedvd日志]#sed-n“s/d/aaaaaaaaaa/p”tmp.txt文件 abcaaaaa135hello [根@livedvd第一步是將<script>myself</script>替換為<script->myself</script>
第二步步驟是殺死<script>。*</script>
第三步是將<script->myself</script>替換為<script>myself</script>
~]=GNU/Linux++]GNU{bash
2.05b,grep 2.5,awk
3。
1.3,sed
4.0.8}
~。
請(qǐng)參閱如何在sed中轉(zhuǎn)義雙引號(hào)和單引號(hào)。
如何用sed命令替換一行中的某個(gè)字符串?
為了敘述方便,假設(shè)您要匹配的字段是panda
我有一個(gè)想法:
用panda只替換一次所有行(不要在SED中使用G命令)-用文本中不存在的特殊字符串替換panda,例如@
在第一步之后,其余包含panda的行是您應(yīng)該刪除的行。
刪除后,將@@@還原到panda。
如果不清楚,請(qǐng)看下面的圖片-我的實(shí)驗(yàn):測(cè)試.txt該文件的內(nèi)容如下:
duck panda duck
goose goose duck panda
bear bear duck panda
sed-I“/AAA/{:ans/123/XYZ/g/EEE/!Ba}“yourfile;首先匹配AAA,然后執(zhí)行大括號(hào)中的語句。;n讀取下一行;s/123/XYZ/g將123替換為XYZ,全局替換,在同一行中多次;:a set jump label a/EEE/!Ba如果當(dāng)前行與EEE不匹配,跳轉(zhuǎn)到標(biāo)簽a并繼續(xù)執(zhí)行,形成一個(gè)循環(huán)。如果它與EEE匹配,它將退出循環(huán),sed將為再次讀入的每一行匹配AAA。由于sed沒有添加-N silent選項(xiàng),因此默認(rèn)情況下它將打印每一行數(shù)據(jù)。