grep 跳脫字元? → "--" - Linux

Table of Contents

我試了一下

$ 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.

--

All Comments

Kumar avatarKumar2010-11-18
好奇怪, grep -l run*,不是應該abc,怎麼才ab而已
Annie avatarAnnie2010-11-23
講錯,是 abd
Sarah avatarSarah2010-11-25
*是上個字重復>=0次, shell中的"*"=>regex中的".*"
Candice avatarCandice2010-11-28
我也覺得很怪,試了那麼多指令,還是把--RUN的檔案LIST
Quanna avatarQuanna2010-11-30
你叫grep把找到的字印出來好了,說不定哪了.*RUN的東西
David avatarDavid2010-11-30
不過我手動vi去找RUN,確認過無其他RUN*的關係字
Tracy avatarTracy2010-12-02
看來解決的方法就是自已寫program了.... 來看看awk寫得出來否
Heather avatarHeather2010-12-06
嗯嗯,我剛用手動去 awk '/RUN/' *,查到的結果也和我用
vi 去搜尋的結果是一樣的,沒有其他行列有*RUN*的字串
Margaret avatarMargaret2010-12-07
謝謝 k大,我再寫script去找找看