いくつかの情報を抽出するために、grep(または端末からの他の関数)を解析したいCSVファイルがあります。 彼らは、この形式は以下のとおりである。各ファイルでgrepで得られた各行の末尾に値を追加するには
* Comment 1
* Comment line 2 explaining what the following numbers mean
1000000 ; 3208105 ; 0.18 ; 0.45 ; 0.00015 ; 0.1485 ; 0.03 ; 1 ; 1 ; 5 ; 477003 ;
* Comment 3
* Comment 4 explaining the meaning of the following lines
* Comment 5
0; 706520; p; 30.4983
1; 20859; p; 57.8
2; 192814; p; 111.842
3; 344542; p; 130.543
4; 54605; p; 131.598
5; 64746; d; 140.898
6; 442082; p; 214.11
7; 546701; p; 249.167
8; 298394; p; 305.034
9; 81188; p; 305.034
.......
第3のフィールドは、d
代わりにp
に等しいである最大1つの行が存在し得ます。したがって、d
を含む行が存在するか、存在しない行があります。
私はこのようなファイルがたくさんあるので、各ファイルから文字(d
)を含む行(存在する場合)を抽出し、この行の後に最初の非コメント行の最後のパラメータを追加して、この例では47703
となります。
今まで私は必要な行を別々に抽出することができました。
私が持っているすべてのファイルからd
を含むすべての行を抽出することができます。これにより
:
grep -h -E ' d;' *.csv > output.csv
そして、これで私は例のようなファイルから正確に数47703
を抽出することができます。
grep -v -e "^*" -e " p; " -e " d; " example_file.csv | cut -d \; -f 11
しかし、私はこれら2つの方法を一緒にする方法がわかりません。
私は冒頭の例から取得したい最終的な出力は次のような一行です:
5; 64746; d; 140.898; 47703
と私は、現在のディレクトリ内のすべてのCSVファイルに対して、このような行を持っていると思います。
これを行う方法はありますか?
あなたの質問へのサンプル入力用のサンプル入力と、ご希望の出力を追加してください。 – Cyrus
しました。入力は最初の例で出力は最後の行です – jackscorrow