Описание тега citrix
Короткий ответ, вы должны исправить исходное первых, это не согласуется начнем с того, что вызывает проблемы при попытке выполнения команд.
Вот подробности, как это исправить:
Изучите то, что вы выложили
Во-первых, давайте посмотрим на проблему. Например, если мы копируем то, что ты выложил и сохранил его как original_file.ТСВ
:
35 23-й Восточной улице Южная Африка 5 600 5000000 6
83 СЕВЕРНОЙ YELLOWLIGHT ПРОСПЕКТ ЮЖНАЯ АФРИКА 4 700 7000000 5
777 НОВОЕ НАПРАВЛЕНИЕ АВИАКОМПАНИИ SAUDIA 2 900 5000000 3
ПЯТЬ ВИЗОВЫХ ДОРОГЕ МЕКСИКА 3 300 500000 7
450 ДЖЕКСОН БУЛ США 3 1500 300000 4
25 КВИНС РОУД ЮЖНАЯ ЮЖНАЯ АФРИКА 1 900 400000 3
Смотрится аккуратно и правильно на первый взгляд. К сожалению, когда мы рассмотрим, используя кот
, такой, вы увидите в командной строке:
$ кошка-original_file.ТСВ
35 23-й Восточной улице^я^ISOUTH Африке^я^и5^серии i600^I5000000^я^И6 $
83 северо-YELLOWLIGHT авеню^ISOUTH Африке^И4^I700^I7000000^я^и5 $
777 новый проспект^ISAUDIA^я^И2^i900 с^I5000000^я^и3 $
Пять визовых дороги^я^IMEXICO^я^и3^I300^I500000^я^и7 $
450 Джексон бул^я^ИУСА^я^и3^И1500^I300000^я^И4 $
25 Квинс роуд югу^я^ISOUTH Африке^я^И1^i900 с^I400000^я^и3$
- в
^я
значит "есть закладка здесь" - в
$
означает "конец линии"
Это показывает нестыковки сразу, например:
- линия 1:
35 23-й Восточной улицы
вкладкаЮжной Африке
... - линия 2:
83 Северной YELLOWLIGHT авеню
разделеЮжная Африка
...
Одна строка с двумя вкладками, разделяющей поле 1 и поле 2, в следующей строке есть только одна вкладка. Это не тот на линию.
Но невозможно правильно отсортировать
данные здесь, когда каждая строка настолько разных, Если есть противоречивые механизмы сепараторов и разделителей в каждой строке.
Очищены версия
Похоже, единственная проблема, по крайней мере, приведенный в этом примере, является появление двойных вкладок, когда на самом деле она должна быть одной вкладке. Поэтому вместо того, чтобы вручную редактировать, чтобы убрать это, мы всегда должны стараться использовать инструменты, где это возможно. Здесь мы можем использовать СЭД
, чтобы очистить его, и сохранить результаты в файл, например, мы можем назвать результаты clean_file.ТСВ
:
$ е с/\т\т/\т/г;с/ $//г' original_file.ТСВ > clean_file.ТСВ
с/\т\т/\т/г
поиски двух вкладках и заменяет его с одной;
для разделения нескольких команд в рамках СЭД аргументс/ $//Г
, потому что кажется, что будет пробел в какой-то конец строки, так вот это удаляет его>
файл перенаправить, чтобы сохранитьСЭД
вывод в файл, который мы называемclean_file.ТСВ
clean_file.ТСВ
выглядит так:
35 23-й Восточной улице Южная Африка 5 600 5000000 6
83 СЕВЕРНОЙ YELLOWLIGHT ПРОСПЕКТ ЮЖНАЯ АФРИКА 4 700 7000000 5
777 НОВОЕ НАПРАВЛЕНИЕ АВИАКОМПАНИИ SAUDIA 2 900 5000000 3
ПЯТЬ ВИЗОВЫХ ДОРОГЕ МЕКСИКА 3 300 500000 7
450 ДЖЕКСОН БУЛ США 3 1500 300000 4
25 КВИНС РОУД ЮЖНАЯ ЮЖНАЯ АФРИКА 1 900 400000 3
Мы можем проверить, что это согласуется, опять же, используя кот -
но сейчас на нашей clean_file.ТСВ
:
35 23-й Восточной улице^ISOUTH Африке^и5^серии i600^I5000000^И6$
83 северо-YELLOWLIGHT авеню^ISOUTH Африке^И4^I700^I7000000^и5$
777 новый проспект^ISAUDIA^И2^i900 с^I5000000^и3$
Пять визовых дороги^IMEXICO^и3^I300^I500000^и7$
450 Джексон бул^ИУСА^и3^И1500^I300000^И4$
25 Квинс роуд югу^ISOUTH Африке^И1^i900 с^I400000^и3$
Мы видим, действительно, все теперь согласованы, если мы внимательно посчитать и их, то теперь такое же количество полей (в данном случае 6), и одинаковое количество вкладок (здесь, 5) в качестве разделителей полей или полей разделителей, на каждую линию.
На Awk, Рода
Теперь у нас есть clean_file.ТСВ
был вход, который отформатирован должным образом, мы можем теперь выполнить команду, и вижу:
$ на awk '/Южная Африка/ {печать }' clean_file.ТСВ | сортировка -т $'\т' -К5,5н
25 КВИНС РОУД ЮЖНАЯ ЮЖНАЯ АФРИКА 1 900 400000 3
35 23-й Восточной улице Южная Африка 5 600 5000000 6
83 СЕВЕРНОЙ YELLOWLIGHT ПРОСПЕКТ ЮЖНАЯ АФРИКА 4 700 7000000 5
- к
-ф
удаляется по сравнению с вашей первоначальной команды, ведь-Ф
предназначена для указания разделителя полей, не нужны здесь, таккак awk
не делает любой сфере манипуляции, и это только используется, чтобы напечатать строки, которые содержатЮАР
в них -т $'\т'
задает разделитель полей должны быть вкладки.-К5,5
для сортировки в столбце 5, в столбце 5, потому что в этом случае, если вы хотели предпоследняя и 5 колонна вот предпоследний в этом 6-столбец данных образецН
означает числовую сортировку. Поскольку по умолчанию по возрастанию, то не нужно ничего указывать дополнительно.
Поэтому очисткой исходных данных и запуска этой программы на awk,
и вроде
, Вы теперь сможете найти в ЮАР
записи и сортировать их по пятому полю, по возрастанию.