2014-05-12 63 views
1

我想要使用awk獲取以特定字符串開頭的所有行。開始一個新行的Unix字符開始


我使用下面的代碼:
awk -v string="$string" '$0 ~ " "string {

如果$字符串= ABC它會得到有空間ABC空間
這意味着這個詞abcd的所有行不符合條件

但我想這樣做的話是在第乞求線路。 意味着" "string不會工作。
所以,我需要的字符是信號線的起始字符/序列

回答

3

您可以使用行啓動錨^

awk -v string="$string" '$0 ~ "^"string { 
+0

謝謝,工作 – user3597432

+0

你應該可以使用'「(^ |)」string「(| $)」'來表示在該單詞之前的行或空白的開始,以及在該行之後的行結束或空白。 –

+1

@AvinashRaj:在斜槓內,'string'正在尋找字符串'string',而不是變量。 –

2

這聽起來就像是grep的工作:

grep "^$string" 

但請注意,無論是grep還是發佈的awk解決方案都在尋找字符串,他們正在尋找正則表達式。

尋找一個線啓動開始於一個字符串,你需要:

awk -v string="$string" 'index($0,string) == 1' 

,或者如果你想串,無非是空白,簡單地包圍:

awk -v string="$string" '$1 == string'