2016-04-25 14 views
0

次のコードをPythonで書かれたcat |ファイルを開く代わりにgrepを実行します。grepと&と論理を組み合わせる

元のコード:

LOG_NAME="/raft/log/{}{}{}_{}_Rx_flow.log".format(NTIME.tm_year,str(NTIME.tm_mon).zfill(2),str(NTIME.tm_mday).zfill(2),str(NTIME.tm_hour).zfill(2)) 
print time.strftime("%Y/%m/%d %H:%M:%S") + " Log file name, RX restart, is: " + LOG_NAME 
print time.strftime("%Y/%m/%d %H:%M:%S") + " ERRTIMEMIN value: " + ERRTIMEMIN + " RXRESTART message value: " + RXRESTART 

LINK_LOG_FILE = open(LOG_NAME, "r") 
ISRXRESTART=0 
for REPline in LINK_LOG_FILE: 
    ***if RXRESTART in REPline and (ERRTIMEMIN in REPline or ERRTIMEMIN1 in REPline) and ISRXRESTART==0:*** 
    #Link restarted - correct behaviour. 
    print time.strftime("%Y/%m/%d %H:%M:%S") + " RX restarted - This is correct behaviour" 
    ISRXRESTART=1 

私がファイルを開く行を削除し、猫と何かに*** ***で次の行を変更し、例えば をgrepする必要があります。

os.popen("sshpass -p ssh [email protected]"+self.ipaddr+" cat "+LOG_NAME+" | egrep `"+device_start+" "+ERRTIMEMIN+`").read().strip() 

をしかし、私はどのように結合するかわかりません&と同じgrepで

+0

@fedorqui私は質問の最後の部分で正確に言った。 – Sarit8

+1

[mcve]を含む方が良い。 – fedorqui

答えて

0

"OR"はsimpでシミュレートすることができます一度に複数のパターンをグレープする:

egrep -E 'thing1|thing2' <file.txt 

-Eは、拡張正規表現を使用するようにegrepに指示します。

私の知るところでは、grepには "AND"演算子はありませんが、順方向と逆方向の両方でパターンをグレープすることで再びシミュレートできます。

egrep -E 'thing1.*thing2|thing2.*thing1' <file.txt 

"NOT"には-vを使用してください。

egrep -E 'thing1' <file.txt | egrep -v 'thing2' 

これは "thing1"のすべてを見つけ、 "thing2"のないものだけを取り込みます。

これが役に立った。

関連する問題