まあ、私はそれらの後にスペースを持っている文字列を抽出したい行の最初の試合でgrepを止めるには?
#test.txt odsdsdoddf112 test1_for_grep dad23392eeedJ test2 for grep Hello World test garbage
test.txtというファイルを持っています。私は次の式を使用し、それが
を働いgrep -o [[:alnum:]]*.[[:blank:]] test.txt
その出力は
odsdsdoddf112 dad23392eeedJ test2 for Hello World
あるしかし、問題はあるgrepをプリント私はそれが最初の試合の後に停止するようにそれらの後にスペースを持っているすべての文字列、 2行目に進みます。
最初にマッチして次の行に移動するには、ここでどの表現を使用しますか?
この問題は、gawkやその他のツールで解決できますが、grepのみを使用するソリューションに感謝します。
編集 私は、LinuxシステムでGNU grep 2.5.1を使用していますが、それは関連しています。
編集
下記の回答の助けを借りて、私は
grep -o ^[[:alnum:]]* test.txt grep -Eo ^[[:alnum:]]+ test.txt
で私の運を試してみましたが、両方は私に正しい答えを与えました。
は今私を驚か何hereが示唆されたが、正しい答えを取得していないとして、私は
grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt
を使用しようとしたことです。ここで は私の端末で出力
odsdsdoddf112 dad23392eeedJ test2 for Hello World
しかしRichieHindleとエイドリアンプロンクからのコメントで、彼らは彼らのシステム上で正しい出力を得たことを示しています。誰も私がなぜ私のシステムで同じ結果を得ていないのか、いくつかのアイデアを持っています。何か案が?どんな助けもありがとう。
編集
まあ、その私の出力が正しくありませんでしたので、grepを2.5.1には、いくつかのバグを持っているようです。私はgrep 2.5.4をインストールしました。今は正しく動作しています。詳細はthis linkをご覧ください。
私の端末にあなたのコマンドをコピーしましたが、まったく同じ結果が得られました。 –
@ andrew-dufresne:あなたのテキストファイルに何か不思議なことはありますか? 'od -c test.txt'を試してみてくださいあなたが見たい文字を表示していますか? – RichieHindle
@ RichieHindle:あなたの迅速な対応に感謝します。本当に感謝しています。私はコマンドを実行し、test.txtと同じ文字を持っていました –