列/行の長さに基づいてファイルを並べ替える

列/行の長さに基づいてファイルを並べ替える

最初の列の文字数に基づいてファイルを並べ替える必要があります。

私は何をすべきかわかりません。 (Linuxではsed / awk / sortを使用できます。)

一例:

.abs is bla bla 12
.abc is bla se 23 bla
.fe is bla bla bla
.jpg is pic extension
.se is for swedish domains

私が望むのは、各行の最初の列の長さに基づいて行をソートすることです。一部の行は4文字で始まり、一部の行は3〜2文字で始まります。私は結果が次のようになりたいと思います:

.fe is bla bla bla
.se is for swedish domains
.abs is bla bla 12
.abc is bla se 23 bla
.jpg is pic extension

可能ですか?

ベストアンサー1

awkまず、を使用して文字数を含む他の列を追加してから、追加されたsort列を削除できます。

awk '{printf "%d %s\n", length($1), $0}' file.txt | sort -n -k1,1 | sed -E -e 's/^[0-9]+ //'

おすすめ記事