Страница 1 из 1

Команда awk

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

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

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

Re: Команда awk

Добавлено: 03 янв 2013, 14:03
Lepton
Тестовый файл 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

Результат:

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

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