我想更熟悉awk語句,特別是可以用一行完成的語句。我有一個看起來像這樣Bash - 尋找每行的最小數量
9 5 0 2
8 7 4 3
4 8 2 1
我想輸出看起來像
0
3
1
有沒有一種方法我可以用awk只是一個襯墊做這文件嗎?謝謝。
我想更熟悉awk語句,特別是可以用一行完成的語句。我有一個看起來像這樣Bash - 尋找每行的最小數量
9 5 0 2
8 7 4 3
4 8 2 1
我想輸出看起來像
0
3
1
有沒有一種方法我可以用awk只是一個襯墊做這文件嗎?謝謝。
用awk:
awk '{min=$1; for (i=2; i<=NF; i++) if ($i < min) min=$i; print min}' file
0
3
1
的是內置的 「最小」 功能的語言:
ruby -ane 'puts $F.min' file
或可用庫
perl -MList::Util=min -lane 'print min @F' file
限制殼:
min() { printf "%s\n" "[email protected]" | sort -n | head -1; }
while read -a nums; do
echo $(min "${nums[@]}")
done < file
+1 Perl的一行 – anubhava
GNU awk在大多數Linux發行版中都可以找到,它具有內置的排序功能asort
。
echo -e "9 5 0 2\n8 7 4 3\n4 8 2 1" |
awk '{ split($0,a); asort(a); print a[1]; }'
0
3
1
你可以做到這一點在的Python(V 2.7.5及以上),以及:
python -c "l='9 5 0 2'.split(); print min(l); l='8 7 4 3'.split(); print min(l); l='4 8 2 1'.split(); print min(l)"
偉大的心靈...... –