作者rexsony (雷克斯索尼)
看板Linux
標題[問題]Script的語法問題
時間Mon Sep 4 12:14:19 2017
ERROR_LOG_DATE=$(date '+%b %d %Y %H:%M' -d' -1 min')
ERROR_LOG_DATE_2=$(date '+%Y%m%d%H%M%S')
Alarm_NAME="VMS"
Alarm_DEVIECS="VMSGW"
Alarm_Local="JHO"
Alarm_Status="Discover Mode"
Alarm_Set="Set"
ISSUE_Status="Critical"
Alarm_NUMBER="DiscoverMode_000"
Alarm_TIME=$(date '+%Y/%m/%d %H:%M:%S')
grep "$ERROR_LOG_DATE" $FILE_NAME | grep $FILE_NAKE "SetModeToDiscover"
我在機器上開始建立Script的變數並執行sh -x 去追蹤script的結果
+ ERROR_DIR=/opt/hwacom/alarm/tosplunk
+ FILE_NAME=/opt/dialogic/log/maintenance_SS7Red.pid-rex.log
++ date '+%b %d %Y %H:%M' '-d -1 min'
+ ERROR_LOG_DATE='Sep 04 2017 12:05'
++ date +%Y%m%d%H%M%S
+ ERROR_LOG_DATE_2=20170904120639
+ Alarm_NAME=VMS
+ Alarm_DEVIECS=VMSGW
+ Alarm_Local=JHO
+ Alarm_Status='Discover Mode'
+ Alarm_Set=Set
+ ISSUE_Status=Critical
+ Alarm_NUMBER=DiscoverMode_000
++ date '+%Y/%m/%d %H:%M:%S'
+ Alarm_TIME='2017/09/04 12:06:39'
+ grep SetModeToDiscover
+ grep 'Sep 04 2017 12:05' /opt/dialogic/log/maintenance_SS7Red.pid-rex.log
我想請問一下在最後兩行的結果
通常在終端的指令會打成 grep "KEYWORD" + FILE NAME | grep "KEYWORD" + FILE NAME
系統會列印出符合這一串結果的值
但是我用追蹤的去看, 好像變成是分兩次執行
我在最後的語法應該要怎麼修正才能像
grpe "KEYWORD" + FILE NAME | grep "KEYWORD" + FILE NAME
這樣的執行方式?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.15.60.216
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1504498463.A.496.html
推 hijkxyzuw: 你最後一行打成 FILE_NAKE 09/04 12:28
→ hijkxyzuw: 還有第二個 grep 為什麼有兩個參數? 09/04 12:31
→ hijkxyzuw: 你是要從 pipe grep 還是從檔案 grep ? 09/04 12:31
→ rexsony: 我需要從檔案grep關鍵字, 需要用and方式 09/04 12:35
→ rexsony: 我想參考板上2008的一篇文章 09/04 12:35
→ rexsony: 是採用ps -aux | awk '/1234/ && /5678/'去操作 09/04 12:36
→ rexsony: 我有嘗試寫進script去執行, 一直都沒有成功 09/04 12:36
推 chang505: 如果是 and 後面也寫錯順序不是? 09/04 13:57
推 chang505: 反正你要查檔案裡面有 "$ERROR_LOG_DATE" 跟 "Set....r" 09/04 13:59
→ chang505: 那就 grep "$ERROR_LOG_DATE" $FILE_NAME |grep "S..t" 09/04 14:00
→ chang505: 不就好了 09/04 14:00
→ chang505: 如果你要兩種東西其一存在就 grep 出來 09/04 14:00
→ chang505: 那就 cat $FILE_NAME|egrep "S...r|$ERROR_LOG_DATE" 09/04 14:02
推 chang505: 不過老實說 我看不懂你的敘述就是了 09/04 14:04
推 hijkxyzuw: 如果有多個要比對,要 grep -e 1234 -e 5678 09/04 14:09
→ hijkxyzuw: 但 grep 是 or ,二條件其一成立就成立,你用 awk 09/04 14:09
→ hijkxyzuw: 看要用 /1234/ || /5678/ 或 /1234/ && /5678/ 都可 09/04 14:10
→ rexsony: 感謝資訊的提供. 我grep的方式是and 兩個條件都要成立 09/04 15:55
→ rexsony: 感謝提供資訊, 我可以再試試看 09/04 15:55