конвейеры в командной строке Linux [дубликат]

$ awk '{print} (FNR % 3)==0{getline<"file2.txt"; print}' file1.txt
1
2
3
A
4
5
6
B

Как это работает

  • print

    Печатает каждый строка из файла1.txt.

  • (FNR % 3)==0{ getline <"file2.txt"; print}

    В каждой третьей строке печатается строка из файла file2.txt.

Альтернатива

Некоторые люди категорически против использования awk's getline. В этом случае:

$ awk 'FNR==NR{a[NR]=$0;next} {print} (FNR % 3)==0{print a[FNR/3]}' file2.txt file1.txt
1
2
3
A
4
5
6
B

Как это работает

  • FNR==NR{a[NR]=$0;next}

    При чтении первого файла file2.txtмы сохраняем его строки в массиве a, а затем пропустить остальные команды и перейти к строке ввода next.

  • print

    Если мы попали сюда, то читаем второй файл, file1.txtи печатаем его строку.

  • (FNR % 3)==0 {print a[FNR/3]}

    Если номер строки в файле file1.txtчетно кратен 3, то печатаем строку из файла file2.txt, номер строки которого составляет одну треть от текущей строки в file1.txt.

0
15.03.2016, 11:36
3 ответа

| - оператор конвейера в Unix / Linux. Его можно использовать там, где выходные данные первой команды могут использоваться в качестве входных данных для второй команды.

Например:

ls -l | less покажет длинный список ваших файлов в каталоге. Команда less принимает выходные данные ls -l в качестве входных данных и отображает список файлов, в которых вы прокручиваете вверх / вниз и видите их.

1
28.01.2020, 02:27

Эта команда записывает строку, состоящую из семи символов '.dump' , за которой следует символ новой строки, в sqlite команда. (Всего 12 байт.)

Команда sqlite не сможет понять инструкцию и ничего не будет записывать в целевой файл bacula.sq , сообщая об ошибке : неполный SQL: '.dump' в stderr .

Возможно, вы имели в виду это вместо того, чтобы использовать символы одинарных кавычек ' вместо знаков апострофа :

echo '.dump' | sqlite bacula.db > bacula.sq
1
28.01.2020, 02:27

Shell pipe operator | делает стандартный вывод для команды стандартным вводом для следующей команды, не создавая промежуточного файла.

Подробную информацию, объясненную в простой форме, можно найти в следующих источниках:

1
28.01.2020, 02:27

Теги

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