2015-06-04 2 views
0

Как я могу сортировать !! с разделителями записей с помощью команды sort?multi character separate sort

для File1

1!!2!!3 
2!3!!3!!1 
3!!2!!2 

ожидать выхода

2!3!!3!!1 
3!!2!!2 
1!!2!!3 

затем

sort -t \!\! -k 3 file1 

РЕЗУЛЬТАТ:

sort: multi-character tab ‘!!’ 

Почему он не работает?

+0

Что это делает? Ошибка? Вывести фактический результат. –

+0

обновлено ......... – bongboy

ответ

1

Multi-символов разделителей не допускается в sort -t, но вы можете просто использовать:

sort -t '!' -k1 file 
1!!b!!c 
2!!f!!w 
4!!e!!e 

EDIT: Если ! может быть там в самих данных вы можете использовать этот трюк:

sed 's/!!/\x06/g' file | sort -t $'\x06' -k1 | sed 's/\x06/!!/g' 
1!!b!!c 
2!!f!!w 
4!!e!!e 

EDIT2: Для делать это в использовании одной команды awk:

awk -F '!!' -v k=1 '{a[$k,$0]=$0} 
    END{asort(a, b, "@ind_num_asc"); for (i in b) print b[i]}' file 
+1

, но что, если данные имеют «!» внутри? – bongboy

+1

@bongboy: Показать данные. – choroba

+1

@anubhava спасибо .. – bongboy

Смежные вопросы