我有一个包含大量mda5哈希值的文本文件。我需要只获取我的文件的哈希作为输出。我已经尝试了cat mda5hashes.txt | grep manual12.pdf
,但我有这个承诺:
manual12 917NJvfNj6uY237fjzmso38djr7s
如何才能将哈希作为提示,以及所在的行数?
答案 0 :(得分:2)
Awk可以非常简单地完成这项工作
假设manual12
在行的开头出现
awk '/^manual12/{print NR,$2}' mda5hashes.txt
将输出为
1 917NJvfNj6uY237fjzmso38djr7s
它做什么?
awk使用格式pattern{action}
当线条与模式匹配时,就会执行操作。
此处的操作是打印由空格分隔的第二个$2
列(默认情况下)
当模式匹配行中的manual12
时,打印哈希部分
答案 1 :(得分:0)
grep -n
会在匹配时打印行号。您可以将由grep和所有其他空格生成的第一个冒号转换为sed 's/:/ /;s/\s\s*/ /g'
的单个空格。然后,您需要第一部分和第三部分,可以使用cut -d ' ' -f 2 --complement
将这些全部链接在一起,你会得到类似的东西:
cat mda5hashes.txt | grep -n manual12 | sed 's/:/ /;s/\s\s*/ /g' | cut -d ' ' -f 2 --complement
我确定有人可以用perl或awk单行代替sed + cut组合。
答案 2 :(得分:0)
这看起来不错
cat -n | grep manual | awk '{$2=""}1'
或
nl | grep manual | awk '{$2=""}1'