unix: как катить с 2х входов? - PullRequest
       13

unix: как катить с 2х входов?

5 голосов
/ 11 декабря 2011

в сценариях программирования UNIX, cat - это команда, которая может объединить 2 файла:

cat file1 file2 > file3

, которая генерирует 3-й путем объединения первых двух.

также можно использовать catс конвейером:

cat file1 | tail -4

здесь будут перечислены последние 4 строки файла 1.

вопрос: как можно объединить последние 4 строки файла 1 и 2, чтобы сгенерировать файл 3?

Я немного растерялся: как дать 2 потока входных данных для cat?

Ответы [ 4 ]

8 голосов
/ 11 декабря 2011

Вы можете сделать следующее (в bash):

(tail -4 file1; tail -4 file2) > file3

Это не использует cat согласно вашему вопросу, но оно достигает цели, которую вы описываете.

5 голосов
/ 11 декабря 2011

Bash имеет функцию подстановки :

  cat <(tail -4 file1) <(tail -4 file2)

Я часто использую эту функцию для сравнения слегка измененных версий двух файлов.

2 голосов
/ 11 декабря 2011

Вы можете использовать pee из moreutils , чтобы сделать это.Вот мое решение

pee 'tail file1' 'tail file2' </dev/null > file3
1 голос
/ 11 декабря 2011

Что не так с:

cat file1 | tail -4 > ./file3; cat file2 | tail -4 >> ./file3

...