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 '...'
是否有办法。
答案 0 :(得分:3)
尝试:
$ 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 :(得分:1)
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
从Ruby:
IO.readlines('file_a', chomp: true) + IO.readlines('file_b', chomp: true) -
IO.readlines('file_x', chomp: true)
#=> ["aaa", "fff"]