Shell
如何找到字元最少的行
我正在編寫一個 shell 腳本,使用任何通用的 UNIX 命令。我必須檢索字元最少的行(包括空格)。最多可以有 20 行左右。
我知道我可以
head -$L | tail -1 | wc -m
用來查找第 L 行的字元數。問題是,我能想到的唯一方法是手動編寫一堆 if 語句,比較值。範例數據:
seven/7 4for 8 eight? five!
將返回
4for
,因為該行的字元最少。就我而言,如果多行的長度最短,則應返回單行。選擇哪一個並不重要,只要它具有最小長度即可。但我認為向其他情況下的其他使用者展示兩種方式並沒有什麼害處。
awk
這是列印第一個找到的最小線的解決方案的變體:awk ' NR==1 || length<len {len=length; line=$0} END {print line} '
可以簡單地通過一個條件擴展以列印所有最小行:
awk ' length==len {line=line ORS $0} NR==1 || length<len {len=length; line=$0} END {print line}' '
與
sqlite3
:sqlite3 <<EOT CREATE TABLE file(line); .import "data.txt" file SELECT line FROM file ORDER BY length(line) LIMIT 1; EOT