出力をテーブルに入れる

出力をテーブルに入れる

これはよくある質問であることを知っていますが、この問題について複数のページを読みましたが、うまく動作しません。私はこのgrepコマンドを使用して、3つの異なるテキストファイルでさまざまな値を見つけます。

コマンドライン:

grep -o "201[1-4].[0-9][ -9]" file1.txt file2.txt file3.txt

出力:

file1.txt:2012.69
file1.txt:2013.44
file2.txt:2013.17
file2.txt:2012.6    
file2.txt:2013.75
file2.txt:2013.08
file3.txt:2013.54
file3.txt:2013.9    

出力では、3つのファイルの名前を最初の行(ヘッダー)として持ち、各列のすべての値を見つけようとします。問題は、必要な行数を予測できないことです。

ベストアンサー1

を使用してawk各ファイルの出力をgrep1行にリンクしてから、およびを使用してcsvtoolよりcolumn -nt良い出力を作成できます(注:これは-nDebian拡張であるため、ユーザーのプラットフォームでは機能しない可能性があります)。

grep -o "201[1-4].[0-9][ -9]" file1.txt file2.txt file3.txt \
| awk -F: '
  {
    if (!s[$1]){ s[$1]=$2 }
    else { s[$1]=s[$1]","$2 }
  }
  END {
    for (f in s){ print f","s[f] }
  }' \
| csvtool transpose -u " " - \
| column -nt

出力:

file1.txt  file3.txt  file2.txt
2012.69    2013.54    2013.17
2013.44    2013.9     2012.6
                      2013.75
                      2013.08

をインストールする必要がありますcsvtool

おすすめ記事