簡體   English   中英

GREP單個整數代替整個相似數字

[英]GREP single integer instead the whole similar numbers

我需要正則表達式的幫助來grep一個整數。

假設我在文本文件中有這些行。

dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c
dm-70   14f504e46494c455267494e5a4e642d516a31562d644f395c
dm-71   14f504e46494c455267494e5a4e642d516a31562d644f394d
dm-72   14f504e46494c455267494e5a4e642d516a31562d644f394e

我只想在不打印dm-70,dm-71,dm-72和UUID的情況下grep“ dm-7”。 我該如何實現?

grep "^dm-7$"

不會返回任何東西。

謝謝。

使用-w匹配確切的單詞:

$ grep -w 'dm-7' file
dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c

您還可以使用grep -w '^dm-7' file ,如果你想確保它開始( ^ )字dm-7

來自man grep

-w ,--word-regexp

僅選擇包含構成整個單詞的匹配項的行。 測試是匹配的子字符串必須在該行的開頭,或者必須在非單詞組成字符之前。 同樣,它必須在行的末尾,或后跟非單詞組成字符。 單詞組成的字符是字母,數字和下划線。

或也用awk

$ awk '$1=="dm-7"' file
dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c

甚至使用sed

$ sed -n '/^dm-7\s/p' file
dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c

嘗試:

grep '^dm-7 '
           ^---note this space

$因為您正在使用它是換行符的“行尾”,這意味着您將尋找任何dm-7 ,這是唯一的東西。

只需在數字7之后使用單詞邊界\\b

grep -P "^dm-7\b" file

您也可以使用單詞邊界正則表達式

grep -oP '^dm-7\b' << EOF
dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c
dm-70   14f504e46494c455267494e5a4e642d516a31562d644f395c
dm-71   14f504e46494c455267494e5a4e642d516a31562d644f394d
dm-72   14f504e46494c455267494e5a4e642d516a31562d644f394e
EOF

將僅打印dm-7 打印其余行。

dm-7

但是, 您可能想要獲取給定行hash ,因此您可以執行以下操作:

word="dm-7"
hash=$(grep -oP "^$word\s+\K(.*)" $filename)
echo "$hash"

版畫

14f504e46494c455267494e5a4e642d516a31562d644f394c

如果只是整行,請從-oP刪除o ,例如:

grep -P '^dm-7\b' << EOF
dm-7    14f504e46494c455267494e5a4e642d516a31562d644f394c
dm-70   14f504e46494c455267494e5a4e642d516a31562d644f395c
dm-71   14f504e46494c455267494e5a4e642d516a31562d644f394d
dm-72   14f504e46494c455267494e5a4e642d516a31562d644f394e
EOF

印刷品:

dm-7 14f504e46494c455267494e5a4e642d516a31562d644f394c

您將需要匹配0-9或字符串$結尾的任何內容

grep "^dm-7([^0-9]|$)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM