2013-04-30 2 views
1

Я запускаю следующую команду, используя awk на file.txt, в настоящее время она запускает команду на идентификаторы, присутствующие в файле .txt сверху вниз. Я хочу, чтобы commmand запускался в обратном порядке для идентификаторов, присутствующих в файле.txt..а какие-либо данные о том, как мы можем это сделать?Выполнить команду в повторном порядке идентификаторов, присутствующих в файле

git command $(awk '{print $1}' file.txt) 

file.txt contains. 

97a65fd1d1b3b8055edef75e060738fed8b31d3 
fb8df67ceff40b4fc078ced31110d7a42e407f16 
a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2 

..... 
+0

Вы хотите запустить файл в обратном порядке или отсортировать сверху вниз? Реверс как в 2e3f3f1fda ... или сверху вниз, как в пункте 9, пункт 8, пункт 7, пункт 6, и т.д. –

+0

выполняются в обратном порядке .... должен быть a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2, fb8df67ceff40b4fc078ced31110d7a42e407f16,97a65fd1d1b3b8055edef75e060738fed8b31d3 .. – user2125827

+0

Вы обязаны с помощью awk или вы открыты для других решений? –

ответ

1

Если вы не связаны с использованием awk затем tail с -r (для обратного) аргумент будет делать трюк ...

Myfile.txt

97a65fd1d1b3b8055edef75e060738fed8b31d3 
fb8df67ceff40b4fc078ced31110d7a42e407f16 
a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2 

Теперь, чтобы напечатать ее в обратном направлении ...

$ tail -r myFile.txt 

a0631ce8a9a10391ac4dc377cd79d1adf1f3f3e2 
fb8df67ceff40b4fc078ced31110d7a42e407f16 
97a65fd1d1b3b8055edef75e060738fed8b31d3 

EDIT: Для вывода этого в файл просто перенаправляет его ...

$ tail -r myFile.txt > newFile.txt 

EDIT: Хотите писать в тот же файл? Нет проблем!

tail -r myFile.txt > temp.txt; cat temp.txt > myFile.txt; rm temp.txt; 

По какой-то причине, когда я перенаправлены tail -r в тот же файл он вернулся пустым, этот способ избежать этой проблемы путем записи во временный «буфер» файла.

+0

, это действительно собирается обновить файл или печать jsut на консоли – user2125827

+0

просто распечатать на консоль, но обновить файл, который вам нужно сделать, это пропустить его –

1

Чтобы изменить строки в файл с помощью AWK, использовать

awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' file 

использование $1 вместо $0 выше для работы на первом поле только вместо всей линии.

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