/ / Bash - пошук мінімальної кількості рядків - linux, bash

Баш - знайти мінімальний номер на рядок - linux, bash

Я намагаюся більше ознайомитися з твердженнями awk, особливо тим, що можна зробити лише з однієї лінії. У мене є файл, який виглядає так

9 5 0 2
8 7 4 3
4 8 2 1

Я хочу, щоб вихід виглядав

0
3
1

Чи є спосіб, яким я можу це зробити, використовуючи лише один вкладиш за допомогою awk? Дякую.

Відповіді:

3 для відповіді № 1

Використання awk:

awk "{min=$1; for (i=2; i<=NF; i++) if ($i < min) min=$i; print min}" file
0
3
1

3 для відповіді № 2

Це мови з вбудованими функціями "min":

ruby -ane "puts $F.min" file

Або доступні бібліотеки

perl -MList::Util=min -lane "print min @F" file

Обмеження до оболонки:

min() { printf "%sn" "$@" | sort -n | head -1; }
while read -a nums; do
echo $(min "${nums[@]}")
done < file

1 для відповіді № 3

GNU awk, який ви знайдете в більшості дистрибутивів Linux, має вбудовану функцію сортування, asort.

echo -e "9 5 0 2n8 7 4 3n4 8 2 1" |
awk "{ split($0,a); asort(a); print a[1]; }"
0
3
1

0 для відповіді № 4

Ви можете це зробити 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)"