Вид один столбец только, сохраняя остальные столбцы нетронутыми

не совсем как симпатичный, но другое решение реализовал с awk:

tail -f /var/log/log.log | awk 'FS="src=" { print "src="$2 }' | awk 'FS=":" { print $1$4 }'`


Обновление: отредактированный, чтобы быть одной строкой для tail -f

5
17.02.2014, 01:05
3 ответа

Как упомянуто в комментариях, Вы не можете достигнуть того, что Вы хотите использовать sort один.

Вы могли cut входной файл, подайте соответствующую часть к sort, и paste они.

$ paste -d' ' <(cut -d' ' -f1 input | sort -n) <(cut -d' ' -f2- input)
1 1
1 3
2 4
5 3
5
27.01.2020, 20:38

Решение в 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

Это предполагает, что первый столбец (тот, который будет отсортирован), состоит только из числовых данных.

1
27.01.2020, 20:38

Как насчет чего-то вроде этого:

#!/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
0
27.01.2020, 20:38

Теги

Похожие вопросы