
これはよくある質問であることを知っていますが、この問題について複数のページを読みましたが、うまく動作しません。私はこの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
各ファイルの出力をgrep
1行にリンクしてから、およびを使用してcsvtool
よりcolumn -nt
良い出力を作成できます(注:これは-n
Debian拡張であるため、ユーザーのプラットフォームでは機能しない可能性があります)。
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
。