Shell-Script

使用 bash 從字元串中刪除模式

  • October 23, 2014

我正在嘗試從文件輸入字元串中刪除一些模式(逐行解析文件)。這是一個範例字元串:

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]

我一直在嘗試使用egrepsed但到目前為止沒有運氣,只是不斷收到錯誤或一些“未終止的替代模式”錯誤。這是我嘗試過的範例:

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-narg 使它為每一行循環。-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]    

引用自:https://unix.stackexchange.com/questions/163411