0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

challenge_clubAdvent Calendar 2023

Day 13

コマンドラインからtsvファイルの3列目が最も大きく、かつ、4列目が最も小さい行を出力したい

Posted at

コマンドラインからtsvファイルの3列目が最も大きく、かつ、4列目が最も小さい行を出力したい

具体的には以下のようなtsvファイルが対象

test.tsv
// tsvファイルの3列目が最も大きく、かつ、4列目が最も小さい行を出力したい
xxxx	128.602585	47.06927	263.6026	false	false
xxxx	224.301987	47.69094	379.302	false	false
xxxx	225.673233	47.60213	355.673218	false	false
xxxx	235.9356	47.95737	395.9356	false	false
xxxx	246.987518	100	371.987518	true	false
xxxx	254.395447	100	434.395447	true	false
xxxx	372.219635	100	1012.2196	true	false

以下のようにすればOK
3列目の最大値を取得し、3列目が最大値のものを4列目で昇順ソートする
(追記)タブは環境によって上手く区切れたり区切れなかったりしたので一度スペース(" ")に置換してから処理すると安定した、、もっといい方法がある気はする、、

FNAME="test.tsv"
MAX_K3=`cat ${FNAME}/result.tsv | sort -nr -k3 | head -1 | cut -f3`
BEST_TIME_LINE=`cat ${FNAME} | sed -e 's/\t\+/ /g' | awk -F" " '$3 ~ /'${MAX_K3}'/ {print $0}' | sort -n -k4 | head -1`
BEST_TIME=`echo "${BEST_TIME_LINE}" | cut -d" " -f3-4 | tr " " "_"`
$ echo ${BEST_TIME}
100_371.987518

もっといい方法がありそうな気がする、、

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?