Объединить две операции в одной команде - awk

Вот так:

$ uniq inputFile > outputFile

Но обратите внимание, что uniq удаляет только те повторяющиеся строки, которые идут друг за другом и последовательно. Поэтому если вы хотите удалить все повторяющиеся строки, даже те, которые не идут последовательно, вы можете сначала отсортировать ваш входной файл, а затем использовать опцию uniq:

$ sort -g inputFile | uniq > outputFile

-g, которая будет сравнивать в соответствии с общим числовым значением.

Или просто используйте sort -nu inputFile > outputFile

3
06.01.2017, 11:25
2 ответа

Попробуйте это так:

awk -i inplace '{sub (/ Car /, "Helicopter")} {sub (/ Bus /, "Airplane")} 1' file

Теперь у вас есть 3 Условие {Действие} блоки. 1 - это частный случай блока condition {action} .

Или попробуйте следующее:

awk -i inplace '{sub (/ Car /, "Вертолет"); sub (/ Bus /, "Airplane")} 1 '

, потому что блок действия может иметь более одного оператора.

1
27.01.2020, 21:30
awk -i inplace '
    /^Car$/ { print "Helicopter"; next }
    /^Bus$/ { print "Airplane";   next }
            { print }' file

Путем сопоставления с полной строкой (с использованием привязок ^и $)мы гарантируем, что не сопоставляем строки как подстроки в других строках (, например. Carв Cart). Воздействуя на найденную строку, а затем немедленно выполняя next, мы защищаемся от изменения строки во что-то, что может вызвать более поздний паттерн.

0
27.01.2020, 21:30

Теги

Похожие вопросы