Команда awk

Установка, обновление, настройка Linux

Модераторы: Olej, adminn

lxxl

Команда awk

Непрочитанное сообщение lxxl » 02 янв 2013, 15:56

Доброго времени суток.Подскажите как с помощью команды awk поменять местами четные и нечетные строки в файле. Что бы было вот так:

Код: Выделить всё

вторая
первая
четвертая
третья

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: Команда awk

Непрочитанное сообщение Lepton » 03 янв 2013, 14:03

Тестовый файл testfile:

Код: Выделить всё

строка первая
строка вторая
строка третья
строка четвертая
строка пятая
строка шестая
строка седьмая
строка восьмая
строка девятая
Скрипт inversion.sh:

Код: Выделить всё

#!/bin/bash
# поменять местами четные и нечетные строки в файле testfile
sed '/^$/d' testfile # удалить пустые строки из файла testfile
cat testfile | awk 'NR%2==1' > testfile1 # при записи содержимого файла testfile1, не записывать чётные строки файла testfile
cat testfile | awk 'NR%2==0' > testfile2 # печатает четные строки файла и записыает в файл testfile2
tput clear
paste -d"\n" testfile2 testfile1 | awk 'NF > 0' # файлы будут объединены с использованием в качестве разделителя символа переноса строки, awk - печатает каждую строку, содержащую хотя бы одно поле
В терминале: $ ./inversion.sh

Результат:

Код: Выделить всё

строка вторая
строка первая
строка четвертая
строка третья
строка шестая
строка пятая
строка восьмая
строка седьмая
строка девятая

Ответить

Вернуться в «Администрирование Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей