-4

В чем смысл этих трех команд оболочки?

# 1
grep "[a-zA-Z]"

# 2
sort -u

# 3
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

2 ответа2

1

Не уверен, почему это превратилось в забвение, но все равно.

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.

0

Первое слово каждого из перечисленных пунктов - это имя команды.

Вы можете использовать руководства для каждой команды, чтобы лучше понять, что они делают. Например, man grep вызывает руководство для команды grep .

Текст, указанный после имени команды, является аргументами, переданными команде, которые дают ей дальнейшие инструкции относительно того, что она должна делать. Вы можете узнать больше о различных аргументах для каждой команды через страницу man Это должно помочь с первыми двумя.

Показанная команда awk немного сложна, но в Интернете доступно более подробное руководство пользователя .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .