このサイトの回答にすべての作業をしてくれてありがとうございます。私はそれらを読んで何時間も過ごしましたが、まだ私の質問に合ったものは見つかりませんでした。それゆえ私自身の投稿。フォルダにawkを使用し、ファイル名を出力行に追加する
私はそれらの中に複数のサブフォルダとtxtファイルがあるフォルダを持っています。これらのファイルの第7列には、遺伝子名があります(私は生き方について遺伝学をしています:))。これらは私が抽出しようとしている文字列です。まもなく、私は特定の遺伝子名/文字列を含むファイル内の任意の行をフォルダ全体で検索したいと思います。私のような何かを書いて、このためにはgrepを使用している:
grep -r GENE . > GENE.txt
シンプルに、私はさらに検索を微調整できるようにする必要があり、それはその後、awkが進むべき道であると思われます。
私はawkを使ってみました。
awk '$7 == "GENENAME"' FOLDER/* > GENENAME.txt
これがうまく機能(そして今、私はこれは私が、grepをして権利を行うことができない、文字列が特定の列でなければならないことを指定することができますか?):私はこのような何かを書きました。 しかし、各行の先頭にファイル名を書き込むgrepとは対照的に、出力ファイルのどの行がどのファイルから来るのかを直接知ることはできません(主に検索のポイントを打ち負かします)。これは、元のファイルの名前を各行のどこかに追加することで、絶対に実行可能なもののように思えますが、わかりません。
私が探しているファイルは変更されていますが、それ以外の場合は常に同じ大きなフォルダの7列の特定の文字列が検索されます。これをどうやって動かすことができますか?
あなたは、あなたがどのファイルから、一致するラインを取得し、ファイルの名前を印刷するには、行番号とFILENAME
を印刷する(FNRはレコードのファイル数を意味する)FNR
を使用することができます エリザベートE
*起点ファイルの名前を各行のどこかに追加* - 不明 – RomanPerekhrest
列を定義する方法がわかっている場合は、 'grep'は特定の列のみのパターンを検索できます。 'seq 10 | tr '\ n' '' | grep -E '^([^] +){6} 7''。 –