2014-10-07 30 views
0

我有一个很多mda5散列的文本文件。我只需要得到我的文件的散列作为输出。我试过cat mda5hashes.txt | grep manual12.pdf,但我有这个PROMT:如何使用'cat'命令获取文件的特定行?

manual12   917NJvfNj6uY237fjzmso38djr7s 

我怎么能得到的只有哈希作为提示,在位于行的数量?

回答

2

awk中能做到这一点很简单 假设manual12 occures在行

awk '/^manual12/{print NR,$2}' mda5hashes.txt 

的开头会给输出

1  917NJvfNj6uY237fjzmso38djr7s 

它能做什么?

AWK使用格式pattern{action}

即当行的图案相匹配,则执行该动作。

这里动作是打印第二$2柱通过(默认)空间分隔的

当图案在印刷散列部的线相匹配manual12

+0

OP也想要行号,但我不知道awk是否足够。 – iobender 2014-10-07 05:00:57

+0

甜!如果我有时间,我应该学习awk,你的解决方案比我的更好。 – iobender 2014-10-07 05:16:12

0

grep -n将打印行号与匹配。您可以使用sed 's/:/ /;s/\s\s*/ /g'将grep生成的第一个冒号和所有其他空格转换为单个空格。然后你要在第一和第三部分,它可以与cut -d ' ' -f 2 --complement

链接这些都在一起来实现,你会得到这样的:

cat mda5hashes.txt | grep -n manual12 | sed 's/:/ /;s/\s\s*/ /g' | cut -d ' ' -f 2 --complement

我敢肯定有人可以取代的sed +切虽然,与perl或awk单行相结合。

+0

** awk'/ manual12/{prin t $ 2}'mda5hashes.txt **说明:搜索包含'manual12'的行,然后打印该行(记录)的第二个字段。 – 2016-03-24 03:26:19

+0

** awk'/ manual12/{print NR,$ 2}'mda5hashes.txt **说明:搜索包含'manual12'的行,然后打印该行(记录)的行号和第二个字段。 – 2016-03-24 03:32:32

0

这看起来行

cat -n | grep manual | awk '{$2=""}1' 

nl | grep manual | awk '{$2=""}1'