2016-11-14 5 views
0

最近、ファイルに偽の段落が存在するかどうかをチェックするbashスクリプトを作成する必要がありました。 ファイルの内容はです。 220841 | | 1EOの
保存はトレード 56945458のための成功のセーブセーブ
の取引を完了した公開ファイルに行の段落/ストリームが存在するかどうかをチェックするシェルスクリプト

MCR用B:ソースからCMDTY:ICE TradecaptureのAPI 再試行回数:(この行から、我々は会社名を0チェック - CMDTY)

公開4EOの
保存はトレード 5666688のための成功のセーブセーブ
の取引を完了| MCRのためのB | 000:ソースからCMDTY:ICE

| | 1EOの
保存公開


展覧会貿易 56945458のために成功したセーブセーブ完了MCR用B:ICEのTradecaptureのAPI 再試行回数:ソースからCMDTYを -

0(CMDTYこの行から、我々は会社名をご確認ください)

一致する必要がある段落です。 220841 | | 1EOの
保存はトレード 56945458のための成功のセーブセーブ
の取引を完了した公開

MCR用B:ソースからCMDTY:ICE TradecaptureのAPI 再試行回数:(この行から、我々は会社名を0チェック - CMDTY)

tempという名前のファイルに上記の段落の内容を保存しました。

私はこの作業を行う簡単なスクリプトを書いたが、何とかしていないようだ。

#!/bin/bash 
result=$(cat temp | grep -A 2 "Published 1EO's") 
echo $result 
line="Published 1EO's Save completed Trade saving save successful for trade 56945458|220841|b for MCR: CMDTY from source:ICE Tradecapture API retry count: 0 (From this line we check Company Name – CMDTY)" 

echo $line | grep "\b$result\b" 
if [ "$line" == "$result" ]; then 
echo "match" 
else 
echo "does not match" 
fi 

助けてください。

ありがとうございます。

+0

質問は何ですか? –

+0

「しかし、何とか働いていないようだ。」 - これは精緻化が必要です。 – Tsyvarev

答えて

1

通常、これらは同じではありません。 grep var $ resultには改行(\ n)文字が含まれ、$行にはスペースが含まれています。

echo $ resultの前にIFS = $ "\ n"を設定すると、その違いを見ることができます。

は、私が(正しい位置に)$ラインにいくつかの\ nを挿入しなければならなかったし、今も元気に動作します:

#!/bin/bash 
result=$(cat test.log | grep -A 2 "Published 1EO's") 
IFS=$"\n" 
echo $result 
line=$(echo -e "Published 1EO's\nSave completed\nTrade saving save successful for trade 56945458|220841|b for MCR: CMDTY from source:ICE Tradecapture API retry count: 0 (From this line we check Company Name – CMDTY)") 
echo "----------------------------------" 
#echo $line | grep "\b$result\b" 
echo $line 

unset IFS 

if [[ $line = $result ]]; then 
echo "match" 
else 
echo "does not match" 
fi 

結果:

$./bashtest.sh 
Published 1EO's 
Save completed 
Trade savi g save successful for trade 56945458|220841|b for MCR: CMDTY from source:ICE Tradecapture API retry cou t: 0 (From this li e we check Compa y Name – CMDTY) 
---------------------------------- 
Published 1EO's 
Save completed 
Trade savi g save successful for trade 56945458|220841|b for MCR: CMDTY from source:ICE Tradecapture API retry cou t: 0 (From this li e we check Compa y Name – CMDTY) 
match 
+0

ありがとうございます。これはまさに私が探していたものです。 –

関連する問題