作者kdjf ( )
看板Linux
標題Re: [問題] grep 跳脫字元? → "--"
時間Tue Nov 16 16:24:00 2010
我試了一下
$ echo run >a
$ echo --run >b
$ echo xxxx >c
$ echo xx --run >d
$ grep -l run *
a
b
$ grep -vl run *
c
$ grep -l run * | xargs grep -vl -- --run
a
$ grep -l run * | xargs grep -vl -- ^--run
a
d
我跑得好好的啊?
※ 引述《aisme21 (有種東西叫方向燈)》之銘言:
: 想請教一個問題
: 小弟最近要查 call 與 RUN 寫在程式中是不是會因為 RUN 程式名稱,所以會多了一個
: sessionID,而call function卻不會的問題。
: 所以我在grep系統的程式要grep -l "RUN " a*.4gl
: 但我同時不要前面有註解"--RUN" 有二個 dash符號打頭的那一行,
: 可是我現在command下
: grep -l "RUN " a*.4gl|grep -v "--RUN"
: 它會出現↓
: grep: illegal option -- -
: grep: illegal option -- R
: grep: illegal option -- U
: grep: illegal option -- N
: usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] -e pattern_list...
: [-f pattern_file...] [file...]
: usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] [-e pattern_list...]
: -f pattern_file... [file...]
: usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] pattern_list
: [file...]
: 如果改成了
: grep -l "RUN " a*.4gl|grep -v "\--RUN"
: 它會執行,但仍然把 --RUN 打頭的程式給list出來,所以沒有達到grep -v的目的
: 所以我該怎麼下?
: 我也試過 grep -l "RUN " a*.4gl|`grep -v "\--RUN"`
: ksh: ac001.4gl: 0403-006 Execute permission denied.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.245.32
推 aisme21:好奇怪, grep -l run*,不是應該abc,怎麼才ab而已 11/16 17:49
→ aisme21:講錯,是 abd 11/16 17:54
→ kdjf:*是上個字重復>=0次, shell中的"*"=>regex中的".*" 11/16 18:15
→ aisme21:我也覺得很怪,試了那麼多指令,還是把--RUN的檔案LIST 11/16 19:13
→ kdjf:你叫grep把找到的字印出來好了,說不定哪了.*RUN的東西 11/16 21:02
→ aisme21:不過我手動vi去找RUN,確認過無其他RUN*的關係字 11/16 22:02
→ kdjf:看來解決的方法就是自已寫program了.... 來看看awk寫得出來否 11/16 22:08
→ aisme21:嗯嗯,我剛用手動去 awk '/RUN/' *,查到的結果也和我用 11/16 22:21
→ aisme21:vi 去搜尋的結果是一樣的,沒有其他行列有*RUN*的字串 11/16 22:21
→ aisme21:謝謝 k大,我再寫script去找找看 11/16 22:22