2015-10-26 2 views
-2

Я пытаюсь запустить скрипт, который я настроил, но когда я иду, чтобы сортировать содержимое и отображать текст, распечатываемый контент, но команда сортировки игнорируется, и информация просто напечатана , Я пробовал этот код с помощью awk, и функция сортировки игнорируется, но я не уверен, почему.Awk Scripting printf игнорирует мою команду сортировки

Команда Я попытался:

sort -t, -k4 -k3 | awk -F, '{printf "%-18s %-27s %-15s %s\n", $1, $2, $3, $4 }' c_list.txt 

Выход я получаю:

Jim Girv 199 pathway rd Orlando  FL 
Megan Rios 205 highwind dr Sacremento CA 
Tyler Scott 303 cross st  Saint James NY 
Tim Harding 1150 Washton ave Pasadena  CA 

Выход мне нужно:

Tim Harding 1150 Washton ave Pasadena  CA 
Megan Rios 205 highwind dr Sacremento CA 
Jim Girv 199 pathway rd Orlando  FL 
Tyler Scott 303 cross st  Saint James NY  

Он просто игнорирует команду сортировки, но по-прежнему печатает информацию, которая мне нужна в формате из файла. Мне нужно, чтобы сортировать на основе четвертого поля сначала состояние и третье поле рядом с городом, затем отображать информацию.

Пример, где каждое поле разделяется запятой.

Field 1 Field 2   Field 3 Field 4 
Jim Girv, 199 pathway rd, Orlando, FL 
+0

могли бы вы объяснить, что вы пробовали? – manetsus

+0

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

+2

Одна строка данных сортируется по своему усмотрению. Пожалуйста, покажите 4-10 строк данных на входе и то, что вы получаете как результат, и то, что, по вашему мнению, вы должны получать. Нет никаких признаков того, как данные передаются в 'sort'; он принимает имена файлов или читает стандартный ввод. Аналогично, 'awk' может читать стандартный ввод или файлы. Если вы укажете файлы в команде 'awk', он будет игнорировать отсортированный стандартный ввод. Обратите внимание, что ведущие пробелы в полях после запятой могут иметь значение; вам нужно указать '-k4,4b', чтобы игнорировать их. Вероятно, вы все равно должны использовать '-k4,4 -k3,3'. –

ответ

3

Проблема заключается в том, что вы делаете sort | awk 'script' file вместо sort file | awk 'script' так sort не сортируют ничего и, следовательно, не производит никакого вывода, а awk работает на исходный файл и так производит вывод из этого. Вы должны были заметить, что ваша команда sort тоже висит из-за отсутствия ввода, и вы должны были упомянуть об этом в своем вопросе.

Чтобы продемонстрировать:

$ cat file 
c 
b 
a 

$ sort | awk '1' file 
c 
b 
a 

$ sort file | awk '1' 
a 
b 
c