繁体   English   中英

从流中删除文件中的行

[英]remove lines in file from stream

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) cat file_a file_b | remove_from_stream_what_is_in(file_x)

结果:

aaa
fff

如果没有基本的过滤器可以做到这一点,那么我想知道是否有办法使用ruby -ne '...'

尝试:

$ cat file_a file_b | grep -vFf file_x
aaa
fff

-v表示删除匹配的行。

-F告诉grep将匹配模式视为固定字符串,而不是正则表达式。

-f file_x告诉grep从file_x行获取匹配模式。

您可能要考虑的其他选项是:

-w告诉grep仅匹配完整的单词。

-x告诉grep只匹配完整的行。

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"]  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM