内部データに基づいて.datファイルを並べ替える

内部データに基づいて.datファイルを並べ替える

各ファイルには、2つの情報(重量と高さ、次のように区切られた空白)を含む多くの.datファイル(変数)があります。ここで First_Last は名前です。

18kg 1.2m「First1_Last1.dat」から

12kg 1.6m「First2_Last2.dat」などから

各値の最初または2番目の値に基づいてソートする必要があります。すべてのファイルをマージし(不明)、catセルを削除してから、ファイル名を一時ファイルの3番目の列として追加して目的の出力を取得する必要があると思います。各ファイルを正しい順序で開くには、関連付けられた名前が必要なので、各値がどのファイルから出てくるのかを追跡してください。だから私が使用したい出力ファイルは次のようになりますcutpastesort -k 1,1 temp.txt

12 1.6 First2_Last2.dat
18 1.2 First1_Last1.dat

組み込みアイテムまたは欠落している.datファイル形式のプロパティを使用してこれを行うより良い方法があるかどうか疑問に思います。それともawk

ベストアンサー1

grepとをsed使用してソートキーを抽出し、ソートする特定の列のみを指定できます。

grep -H kg *.dat \
  | sed 's/^\([^:]\+\):\([0-9.]\+\)kg \+\([0-9.]\+\)m.*$/\2 \3 \1/' \
  | sort -t' ' -k1,2 -g

出力例:

12 1.6 First2_Last2.dat
18 1.2 First1_Last1.dat

おすすめ記事