如何使用' cat'来获取文件的特定行?命令?

时间:2014-10-07 04:27:57

标签: unix grep lines cat

我有一个包含大量mda5哈希值的文本文件。我需要只获取我的文件的哈希作为输出。我已经尝试了cat mda5hashes.txt | grep manual12.pdf,但我有这个承诺:

manual12          917NJvfNj6uY237fjzmso38djr7s

如何才能将哈希作为提示,以及所在的行数?

3 个答案:

答案 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'