2015-01-05 32 views
-1

我必須使用sed來匹配固定字符串。與sed中的固定字符串匹配

我有這樣一個文件僞數據庫:

key\x0value 
keyyy\x0value 

如果我嘩嘩只得到,如果我作爲參數「鑰匙」,而不是「EY」,例如使用第一線。 *與鍵匹配:「鍵」 *不匹配:「k」,「ke。」,「ey」,...:沒有正則表達式,沒有部分搜索,只有「鍵」

我無法使用awk,並且該字符串必須包含密鑰末尾的\x0。 似乎我不能使用grep,因爲它不處理\ x0或\ 0

問題是,我不能同時要求匹配/^key \ x0 /並且不要使用正則表達式解釋鍵。

最後,我的sript將只有一個參數:精確匹配。

+2

這是不是很清楚你的意思。你能用當前的輸出和期望的輸出來舉一個例子嗎?例如,如果你說'sed -n'/ key \\ x0value/p'file',這將打印包含'key \ x0value'的行(注意需要轉義'\'),並且不會匹配包含for例如'這是[k] ey \ x0value' – fedorqui

+2

你有沒有嘗試過任何東西? – lurker

+0

我編輯得更清楚 – Arthur

回答

0

sed沒有用於匹配固定字符串的設施。不過,可以通過首先轉義要匹配的字符串中的所有特殊字符來達到相同的效果。如果一個鍵被作爲第一個參數到該腳本提供的,它將只打印file包含該鍵的行:

#!/bin/bash 
printf -v script '/^%s\\x00/p' "$(sed 's:[]\[^$.*/]:\\&:g' <<<"$1")" 
sed -n "$script" file 

有關此代碼的詳細信息,請參閱this answer

+0

謝謝,我擔心這個問題。 – Arthur

相關問題