удалить строки в файле из потока - PullRequest
2 голосов
/ 09 мая 2019
cat file_a
aaa
bbb
ccc

cat file_b
ddd
eee
fff

cat file_x
bbb
ccc
ddd
eee

Я хочу cat file_a file_b | remove_from_stream_what_is_in(file_x)

Результат:

aaa
fff

Если для этого нет базового фильтра, то мне интересно, есть ли способ с ruby -ne '...'.

Ответы [ 2 ]

3 голосов
/ 09 мая 2019

Попробуйте:

$ cat file_a file_b | grep -vFf file_x
aaa
fff

-v означает удаление совпадающих строк.

-F говорит grep обрабатывать шаблоны соответствия как фиксированные строки, а не как регулярные выражения.

-f file_x говорит grep, чтобы получить шаблоны совпадений из строк file_x.

Другие варианты, которые вы можете рассмотреть:

-w указывает grep на совпадение только с полными словами.

-x указывает grep на совпадение только с полными строками.

1 голос
/ 09 мая 2019
IO.write('file_a', %w| aaa bbb ccc |.join("\n"))     #=> 11
IO.write('file_b', %w| ddd eee fff |.join("\n"))     #=> 11
IO.write('file_x', %w| bbb ccc ddd eee |.join("\n")) #=> 15

Из рубина:

IO.readlines('file_a', chomp: true) + IO.readlines('file_b', chomp: true) -
  IO.readlines('file_x', chomp: true)
  #=> ["aaa", "fff"]  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...