не совсем как симпатичный, но другое решение реализовал с awk:
tail -f /var/log/log.log | awk 'FS="src=" { print "src="$2 }' | awk 'FS=":" { print $1$4 }'`
Обновление: отредактированный, чтобы быть одной строкой для tail -f
Как упомянуто в комментариях, Вы не можете достигнуть того, что Вы хотите использовать sort
один.
Вы могли cut
входной файл, подайте соответствующую часть к sort
, и paste
они.
$ paste -d' ' <(cut -d' ' -f1 input | sort -n) <(cut -d' ' -f2- input)
1 1
1 3
2 4
5 3
Решение в perl
:
perl -lane '
push @first , $F[0];
push @second, $F[1];
END{
@first = sort { $a <=> $b } @first;
print "$fist[$_] $second[$_]" for (0..$#first)
}' your_file
Это предполагает, что первый столбец (тот, который будет отсортирован), состоит только из числовых данных.
Как насчет чего-то вроде этого:
#!/bin/bash
while read ID
do
groups $ID
done < input.file |
awk '{print $3}' | sort | uniq > list_of_groups
, который получает ваш лексически сортированный уникальный список групп имен.
-121--133358-Я на Solaris и нужен ответ без сортировки и принятый ответ не работал для меня. Joeyg на unix.com имел ответ: Sort-One-Column - только
cat tmp.txt
1 5
2 3
5 4
1 3
#Sort by 1st column leaving second stable sorted by the 1st.
cat -n tmp.txt | sort -k 2,2 | awk '{print $2,$3}'
1 5
1 3
2 3
5 4
#Sort by 2nd column leaving first stable sorted by the 2nd.
cat -n tmp.txt | sort -k 3,3 | awk '{print $2,$3}'
2 3
1 3
5 4
1 5
Различная интерпретация через комментарий - сортировать один столбец, не затрагивая остальные:
#Sort by 1st column leaving other columns untouched:
cat -n tmp.txt | sort -k 2,2 | awk '{a[NR]=$2;b[$1]=$3} END {for (i=1;i<=NR;i++)print a[i]" "b[i]}'
1 5
1 3
2 4
5 3
Explanation:
cat -n adds rownums to force sort to do "sort -s" without GNU sort.
sort -k 2,2 sorts by the 1st column
NR is a built-in variable that holds the row num.
a[NR]=$2; puts the sorted column in a[1..4]
b[$1]=$3; puts the "unsorted" 2nd column in b[rownum from cat]
Then the for loop just outputs the two arrays.
Что мне нужно, что было новейшим , уникальным столбец 3 записей в файл. например
cat tmp2.txt
5|1|3
4|2|1
1|3|2
3|4|1
2|5|2
cat -n tmp2.txt | sort -k 3 -rut '|' | awk '{print $2}'
5|1|3
2|5|2
3|4|1