2015-09-28 1 views
-1

Мне нужно отсортировать все файлы, чьи имена заканчиваются на .txt, уменьшаясь в соответствии со вторым столбцом (который является числом, а не строкой). Все файлы имеют два целых столбца, и мне нужно, чтобы сортировка вступила в силу для одних и тех же файлов.сортировать несколько файлов по 2-й колонке убывающим

Например, предположим, что file1.txt содержит

1   33 
2   55 
3   22 

и file2.txt содержит

10   133 
2    551 
30   2200 

мне нужна команда оболочки, которая обрабатывает как * .txt файлы (на самом деле у меня есть 100s из их) и влияет на их следующим образом:

file1.txt становится:

2   55 
1   33 
3   22 

file2.txt становится:

30   2200 
2    551 
10   133 
+0

'sort -k2n * .txt'? –

+0

@ jonathan-leffler Спасибо, но (1) здесь увеличивается порядок, и мне нужно его уменьшить, и (2) Мне нужна команда, чтобы сохранить отсортированные данные в тех же файлах (например, перезаписать старые файлы). Это возможно? – rak

+1

'для файла в * .txt; do sort -k2nr -o "$ file" "$ file"; done' сортирует каждый файл в обратном порядке и перезаписывает (безопасно) каждый отдельный исходный файл. –

ответ

0

Как было отмечено в комментарии:

for file in *.txt; do sort -k2nr -o "$file" "$file"; done 

В -k2nr виды на поле 2 в обратном порядке нумерации. Опция -o, за которой следует одно из имен входных файлов (здесь, только имя входного файла), безопасно перезаписывает файл с отсортированным результатом.