Bash:複数のファイルの行を1つの出力ファイルに追加し、ファイル名を列として追加します。

Bash:複数のファイルの行を1つの出力ファイルに追加し、ファイル名を列として追加します。

これは前の質問につながります。 Bash:複数のファイルから指定された列の最も高い値を持つ行を選択し、最も高い値を持つ行を含む出力ファイルを作成します。

私が使った解決策は次のとおりです。

for file in mi*
do
    sort -k14,14 -n $file | tail -1
done > result

出力ファイルを作成するときにファイル名を含む列を追加できるように、このコードを編集する簡単な方法があるのか​​、それとも別のアプローチを使用する必要があるのか​​疑問に思います。

この問題を発見しました複数のファイルからデータを取得し、ファイル名を追加するBashコマンドしかし、私のニーズに合わせて調整する方法がわかりません。

追加情報で更新:ファイルはtsvで、列名があります。

ベストアンサー1

for file in mi*
do
    printf "%s " $file
    sort -k14,14 -n $file | tail -1
done > result

または

for file in mi*
do
    echo "$file $(sort -k14,14 -n $file | tail -1)"
done > result

区切り文字に応じて、ファイル名の後のスペースを別の文字に置き換えることができます。

おすすめ記事