1

作業ディレクトリ内のすべてのソフト/シンボリック リンクを、引数 1 で指定されたファイルに一覧表示する簡単なプログラムを作成しています。そのためには grep を使用する必要があることは承知していますが、一般的には正規表現の書き方がわかりにくい。この場合、変数 ($argv[1]) が関係しているため、特に困難です。

問題の (不十分に記述された) コード行は次のとおりです。

ls -l | xargs grep '-> $argv[1]'

これでの私の意図は、次のような -> と指定されたファイルを含むすべての行をキャッチすることでした

link1 -> file
link2 -> file

等々。これを達成するためにgrepを使用できる方法はありますか?

4

2 に答える 2

0

はどんな言語$argv[1]ですか?(POSIX) Bourne Shell は配列をサポートしていません。スクリプトおよび関数への引数は、 などで参照さ$1$2ます。grepパターンの最初のハイフンをオプションとして扱わないようにするには、 を使用してオプション--の終わりを知らせます。次に、単一引用符にはパラメーター置換はなく、二重引用符のみです。すべてをまとめると、これはうまくいくかもしれません:

set somename  # Sets $1 to somename
ls -l | xargs grep -- "-> $1"

grep が理解できない場合は--、試してください

ls -l | xargs grep ".*-> $1"
于 2013-11-03T21:40:14.677 に答える