Shell-Script
使用 bash 從字元串中刪除模式
我正在嘗試從文件輸入字元串中刪除一些模式(逐行解析文件)。這是一個範例字元串:
1: (10/17 12:49:31.175) - CONSTANT ID1 - CONSTANT ID2: RAW DATA OUT > [0x00,0xa2,…,0x00]
我希望輸出如下所示:
(12:49:31.175): RAW DATA OUT : [0x00,0xa2,…,0x00]
我一直在嘗試使用
egrep
,sed
但到目前為止沒有運氣,只是不斷收到錯誤或一些“未終止的替代模式”錯誤。這是我嘗試過的範例:echo $line | sed -e 's/.*\s\([0-9]*:[0-9]*:[0-9]*.[0-9]*\)'
任何幫助,將不勝感激。在我的Mac OS/X上,我通常更像是一個批處理文件人,而不是 bash 。
編輯:
我應該提一下,我正在讀取這樣的文件:
while read line do
然後我想對
line
文件中的每一行執行任何操作。
您也可以
perl
從呼叫bash
。-n
arg 使它為每一行循環。-e
表示腳本是一行。cat in.txt | perl -ne 's{.*(.*\().*? (.*) -.*(:.*?)\s\s+.*(\[.*)}{$1$2$3 : $4};'
這適用於您的範例輸入行:
sed 's/.* \([0-9].*)\) .*>/(\1: RAW DATA OUT:/ ' <<\DATA 1: (10/17 12:49:31.175) - CONSTANT ID1 - CONSTANT ID2: RAW DATA OUT > [0x00,0xa2,…,0x00] DATA
它列印:
(12:49:31.175): RAW DATA OUT : [0x00,0xa2,…,0x00]