日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[笔记]使用shell命令(awk,sed,grep)处理几个特征字符串之间的文本

發布時間:2025/1/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [笔记]使用shell命令(awk,sed,grep)处理几个特征字符串之间的文本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題一:提取一行文本之中幾個特征字符串之間的文本。

例:從文本 "/directory1/WantedString/directory2" 中提取"directory1/"和"/directory2"之間的部分,即"WantedString"

1、使用sed

1) 逐步替換,模式:sed -n 's/pattern1//;s/pattern2//;p'

echo "/directory1/WantedString/directory2" | sed -n 's%/directory1/%%;s%/directory2%%;p'

2) 引用不想替換的部分,模式:sed -n 's/pattern1\(.*\)pattern2/\1/p' 或 sed -r 's/pattern1(.*)pattern2/\1/g'

echo "/directory1/WantedString/directory2" | sed -n 's%/directory1/\(.*\)/directory2%\1%p'

2、使用awk

1) 用特征分隔符分成若干段,輸出第n段。

echo "/directory1/WantedString/directory2" | awk -F "/" '{print $3}'

2) 把特征字符串替換掉,輸出剩下的部分。

echo "/directory1/WantedString/directory2" | awk '{gsub("directory[0-9]|/","",$0);print}'

3、使用grep

echo "/directory1/WantedString/directory2" | grep -oP "(?<=/directory1/).*(?=/directory2)"

如果有更多特征字符串,例如"p1Hellop2,p3Worldp4!"

用awk和sed都可以把"Hello,World!"提取出來,

但grep似乎就不行了。###### ???

?

問題二:提取特征字符串所在行之間的文本

例:文件"a.txt"存放文本如下,要求提取出"Hi "和"patterns"之間的文本

Hi I would like
to print text
between these
patterns

1、sed

sed -n '/^Hi/,/patterns/{s/^Hi //;/^patterns/d;p;}' a.txt

注釋:"/^Hi/,/patterns/" 取得Hi和patterns之間的行(包括Hi和patterns),然后"s/^Hi //"把"Hi "替換掉,接著"/^patterns/d" 把patterns所在行刪掉,最后打印輸出

2、awk

awk '/patterns/{f=0}/^Hi /{gsub("^Hi ","",$0);f=1}{if(f==1)print}' a.txt awk 'sub(/^Hi /,""){f=1} /patterns/{f=0} f' a.txt

注釋:定義一個flag: f,當行有patterns時,f為0,當行以"Hi "開頭時,替換掉"Hi "并令f為1,當f為1時打印所在行。

?

參考資料:

http://stackoverflow.com/questions/13023595/sed-awk-print-text-between-patterns-spanned-across-multiple-lines

轉載于:https://www.cnblogs.com/zzj99c/p/3682570.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的[笔记]使用shell命令(awk,sed,grep)处理几个特征字符串之间的文本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。