Не уверен, почему это превратилось в забвение, но все равно.
grep "[a-zA-Z]"
grep - это инструмент поиска, использующий регулярные выражения. Это конкретное выражение ищет диапазон символов (в скобках) в нижнем регистре (az) или в верхнем регистре (AZ). Таким образом, он будет соответствовать одной букве ASCII на входе.
ПРИМЕЧАНИЕ Поскольку в этой строке не говорится о файле (или канале) для чтения, он будет читать из стандартного ввода, пока вы не завершите его нажатием Ctrl-D. Это означает, что ваш терминал будет зависать, даже если он ищет.
сортировать -у
Сортируйте stdin (см. Примечание выше), затем объедините строки, которые находятся рядом друг с другом, в одну строку, то есть список только уникальных строк
awk -F"," '{if($4 == "2" && $6 == "UPD-LOC" && $7 == "OUT"){
print $11,$12,$18,$23,$11$12
}}' $txnfile_fail | sort | tr ' ' ',' >$TEMP_FOLDER/txnFailOut-$1.txt
awk - полезный инструмент для манипулирования текстовыми файлами, где-то между bash+grep и perl по сложности и головной боли. Это использует силу awk для чтения столбцов,
Запустите инструмент awk для файла, названного в переменной $ txnfile_fail. Флаг -F
предназначен для разделителя полей, поэтому это входной файл с разделителями-запятыми. Проверьте, является ли 4-е поле 2, если 6-е поле «UPD-LOC», а 7-е поле «OUT». Если это так, сбросьте поля 11, 12, 18, 11, 12. Затем сортируйте выходные данные, переводите пробелы в запятые, а затем сохраняйте дамп в файл $ TEMP_FOLDER/txnFailOut- $ 1.txt.
Таким образом, он фильтрует CSV-файл, печатает только определенные столбцы, сортирует отфильтрованный ввод и выводит в другой файл. Как ни странно, все хорошо с пробелами в качестве выходных разделителей, а затем переводит пробелы в разные символы. Вы можете установить разделитель в awk с помощью оператора OFS =, awk.