2015-09-26 3 views
0

Предположим, у меня есть файл (file.txt), который содержит несколько цифр с символами.Обратный порядок ввода

1 2 3 4 (23) 

23 2 1 (51) 

2 1 4 (11) 

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

(23) 4 3 2 1 

(51) 1 2 23 

(11) 4 1 2 

Я пробовал:

awk '{print $NF,$0}' file.txt | sort -nr 

Есть ли командная строка в Linux или мини-код (в AWK или в C++ или какой-либо другой язык) для выполнения этого задача?

+1

Есть команды, которые могут * * сделать это, как, например, [ 'Awk'] (http://man7.org/linux/man-pages/man1/gawk.1.html). Или вы можете сделать свою собственную программу для этого в C++ (почему еще вы отметили бы этот вопрос C++?). Если вы создали свою собственную программу (в AWK или на C++ или на каком-либо другом языке), и у вас есть проблемы с ней, то вы более чем можете показать нам, что вы пробовали, и объяснить, что с ним не так, и мы постараемся помочь вы. Тем не менее мы *** не будем писать вашу программу для вас. –

+0

Я продолжал пробовать в командной строке, но продолжаю терпеть неудачу. Вот команда, которую я пробовал: awk '{print $ NF, $ 0}' file.txt | sort -nr – MikeRi

+0

Nvm Я, наконец, понял! Спасибо, что сообщили мне об abk функциональности awk! effin мощныйlll инструмент !!! – MikeRi

ответ

4
awk '{for (i=NF;i>0;i--){printf $i" "};printf "\n"}' file.txt 

Выход:

 
(23) 4 3 2 1 

(51) 1 2 23 

(11) 4 1 2 
+1

Никогда не используйте 'printf $ i', потому что это приведет к сбою критически и/или катастрофически, когда вход содержит символы форматирования printf, такие как'% s'. Всегда используйте 'printf '% s', $ i'. Кроме того, '{printf $ i" "}; printf" \ n "' добавляет конечный пустой символ в конец каждой строки, используя 'printf '% s% s", $ i, (i> 1? OFS: ORS). –

+2

Благодарим вас за полезные подсказки. – Cyrus

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