2014-10-07 215 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' 
相關問題