[英]using sed to substitute a string
我有這樣一條線:
22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937
我想解析它並以某種方式替代它,以便僅獲得這一部分:
a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc
目前,我正在使用此:
sed -re \"s/^.+x//\
但這僅給了我x之前的部分。請給我一些提示嗎?
謝謝 。
它必須被鎮靜嗎? cut
做得完美。
echo '22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937' | cut -d' ' -f22-53
您可以使用此表達式來匹配整行並捕獲字符串aftex x <hex> <hex>
:
.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*
假設x
始終是您想要截斷字符串其余部分的定界符。
編輯 :
在命令行上執行此操作的完整命令:
echo " 22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937" | perl -pe "s/.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*/\1/"
我不熟悉sed,但這適用於一般的regex情況:
此正則表達式將匹配字符串"a8 ... fc"
,其中"..."
可以是十六進制字節(僅小寫字母)和空格的任意組合:
/a8([0-9a-f ]+)fc/
然后,您可以使用以下命令在同一正則表達式中使用替換:
/a8$1fc/
在這里$1
將被括號([0-9a-f ]+)
的匹配替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.