2016-09-12 3 views
1
ls local* | tail -1 

は、たとえばlocalhost.txtのようなファイル名を与えます。 grepがこのファイル内のパターンを検索し、ファイル名の文字列ではないようにします。ファイル内ではなくファイル名文字列内のパターンを検索するので、以下のように動作しません。ファイル内のパターンを検索するためにgrepに文字列としてfilenameを入力する方法はありますか?

ls local* | tail -1 | grep -Eo 'pattern' 

私は助けていただきありがとうございます!ありがとう!

答えて

1

任意の空白/グロブなどの文字が含まれていない、あなたのファイル名と仮定すると、あなたはxargsできる:

ls local* | tail -1 | xargs grep -Eo 'pattern' 

またはコマンド置換使用:

grep -Eo 'pattern' $(ls local* | tail -1) 
1

cat $(ls local *)| grepの-Eo 'パターン'

+0

感謝を!これは機能します。あなたはcatの後に$()を教えてもらえますか?ありがとう! – kofhearts

+0

'cat'はここでは不要で、' tail 'に何が起こったのですか? – anubhava

+0

$()はコマンド置換に使用されます(つまりls local *の出力を基本的にcatとargensとして渡してgrepに渡すことができます)。 )anubhava - 私の順序でネコが必要です。あなたの例では、コマンド置換結果を直接grepに渡すのではありません。 – Erikzy

関連する問題