Awk

如何以序列的方式列印文件中的行,即根據 tcl 腳本中的特定列排序?

  • June 19, 2020

我想根據源文件的第三列排序來列印文件內容。

源文件.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

試試這個,

sort -k3 sourcefile.txt
  • -k用關鍵位置/欄位排序。

既然你標記了 tcl

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]

按字典順序按每行 ( -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

引用自:https://unix.stackexchange.com/questions/593610