ファイルの行を順次印刷する方法、つまりtclスクリプト内の特定の列に基づいてソートされる方法は何ですか?

ファイルの行を順次印刷する方法、つまりtclスクリプト内の特定の列に基づいてソートされる方法は何ですか?

ソースファイルの3列目のソートに基づいてファイルの内容を印刷したいと思います。

ソースファイル.txt:

Manav Kumaom Fre
shailesh himadri aif
manisha Kailash mac
Ravi Jwala blu
Prakash Ojha Zan
Mahi Aulakh yep

新しいファイルの3番目の列に従ってソートされたファイルの内容を印刷したいと思います。

希望の出力:

shailesh himadri aif
Ravi Jwala blu
Manav Kumaom Fre
manisha Kailash mac
Mahi Aulakh yep
Prakash Ojha Zan

答え1

この試み、

sort -k3 sourcefile.txt
  • -k主な場所/フィールドで並べ替えます。

答え2

タグ付けした後

set filename "sourcefile.txt"
set fh [open $filename r]
set data [split [read -nonewline $fh] \n]
close $fh
set sorted [lsort -index 2 -dictionary $data]
puts [join $sorted \n]

各行の3番目の単語に基づいてアルファベット順にソートします()-index 2。各行が有効なリストであると仮定します。これは素朴です。これはより安全です。

set lines [split [read -nonewline $fh] \n]
set data [lmap line $lines {split $line}]

出力

shailesh himadri aif
Ravi Jwala blu
Manav Kumaom Fre
manisha Kailash mac
Mahi Aulakh yep
Prakash Ojha Zan

関連情報