5000ファイルの最初の列に特定の文字列を含む行を取得したいと思います。
ファイル1
agd fkg fls ofk
ggs kkg ikg gkl
bsg ksf olg lzj
many more lines,,,
kgf kkg ikg lgk
ファイル2
gik zlg olg pzk
ppl sjg gol dzj
zjg iwj bmh hgi
many more lines,,,
kgf wlg ugk lkf
より多くのファイルがあります。
結果ファイル
kgf kkg ikg lgk
kgf wlg ugk lkf
more lines...
この場合、「kgf」など、最初の列が特定の文字列である各ファイルから行を取得したいと思います。
1つのファイルからデータをインポートする方法はわかっていますが、複数のファイルからデータをインポートする方法はわかりません。誰かが私に教えることができますか?
ベストアンサー1
簡単に:
grep -rEh '^kgf\b' .
再帰的です。
-r、--recursiveコマンドラインにある場合にのみ、シンボリックリンクに沿って各ディレクトリの下のすべてのファイルを繰り返し読み込みます。ファイルオペランドが指定されていない場合、grepは作業ディレクトリを検索します。これは -d recurse オプションと同じです。
または、現在のディレクトリでワイルドカードを使用します。
grep -Eh '^kgf\b' *
互換性テスト:
- GNUとうまく動作します(驚きではありません)。
grep (GNU grep) 3.3
- FreeBSD 12.1でうまく動作します。
grep (GNU grep) 2.5.1-FreeBSD
- Minix3には(拡張正規表現と再帰も含む)スイッチが
grep version 0.9
ありますが、認識されません。-h
-E
-R
単語の境界\b
しかし、-w
だから
grep -wh '^kgf' *
または
grep -h '^kgf ' *