2014-03-12 105 views
1
function func { 
awk -v fr="$1" -v ft="$2" '/fr/,/ft/' text.txt } 
func "frame 44" "frame 1000" 

功能應該抓住框架44和幀1000然而的匹配之間的線,AWK查找「FR」代替「幀44」,使得例如「框架1」在文本文件中匹配。我該如何解決這個問題?awk不寄存器內部變量intitiations

+0

您不能使用'/ fr /'來匹配輸入變量'fr'。使用'$ 0〜fr' .. –

+0

您是否還希望包含「frame 44」和「frame 1000」的行,還是隻想要兩行之間的行? –

+0

謝謝,不知道。不,頁眉和頁腳匹配不重要。然後會有什麼不同呢? – user3412984

回答

2

嘗試此命令:

awk -v fr="$1" -v ft="$2" ' 
    $0 ~ fr { inFrame=1 } 
    inFrame {print} 
    $0 ~ ft { inFrame=0 }' text.txt 

這也將包括頁眉和頁腳行。

要跳過頁眉和頁腳,請嘗試:

$0 ~ fr { inFrame=1; next } 
$0 ~ ft { inFrame=0 } 
inFrame {print} 
0

如何使用sed的呢?

function func() { 
    sed -n "/$1/,/$2/p" text.txt 
} 
+0

爲什麼不呢。這工作完美無缺,謝謝! – user3412984