我有一个这样的表:
以及一个包含第三列中的 2 个字符串的文件:applepotato
我想提取标题和包含字符串 apple 和potato 的所有行以获得此
谢谢
答案1
使用awk
:
awk 'FNR == 1 || /potato|apple/'
使用sed
:
sed -n '1p; /potato\|apple/p'
potato|apple
在这两种情况下,都会打印行号 1 和任何匹配的行。
答案2
这是纯文本的 txt 表:
A B C D E
21 63 apple yellow 5
23 69 lemon green 6
45 135 orange yellow 7
67 201 mango green 4
54 162 potato maroon 5
虽然我可以想到一个复杂度较低的解决方案,但我认为这有点黑客:-)假设表txt文件被称为table1
$ head -1 table1 && grep '\b\(potato\|apple\)\b' table1
这将获取第一行并将grep
结果附加到其中。\b
是一个词边界。因此,这将确保像“grapple(hook)”这样的词被过滤掉:)另一个更复杂的解决方案将假设 A、B、C... 由制表符分隔\t
:
$ grep '\(\b\(potato\|apple\)\b\|\([A-Z]\|\(\t\|\n?$\)\)\)' table1