2013-07-31 112 views
1

我試圖用bash或awk提取一部分字符串。awk部分字符串比較

我想我可以使用read或awk來解決這個問題。

我INPUT_FILE就像下面

cat ./input_file 

in_size=1 
# out_size=2 

所以,

out_size=$(awk '{if($2=="out_size=2"){ blabla ; print output}' ./input_file) 

我不知道如何解決這個問題。

而且,我怎樣才能設置多個字段分隔符FS空白空間和選項卡。

有例如像

FS='[/=]' 

如何使用4 FS/= 「」 「\ t」 的??

在此先感謝。

+1

'FS = 「[\\ T]」'?你究竟想要什麼?我不明白你想解決什麼問題.. :( – Kent

+0

是的,我嘗試過awk -F FS =「[=]」,但它的字段分隔符變成了「=」,而不是空的空格「」和「=」 – user2268721

+0

你應該執行'awk -F'[=]''code''或'awk'BEGIN {FS =「[=]」} ...''。'awk -F FS ='... '' – Kent

回答

2

使用POSIX風格的字符類[:blank:]其中包括任何水平的空白字符。

awk -F '=|[[:blank:]]+' '{ 
    for (i=1; i<NF; i++) { 
     if ($i == "out_size") { 
      print $(i+1) 
      exit 
     } 
    } 
}' filename 

除非你知道,它總是第2個字:

awk -F '=|[[:blank:]]+' '$2 == "out_size" {print $3; exit}' filename 
+0

非常感謝。 – user2268721

+0

非常感謝。在'[[:blank:]] +'中'+'的含義是什麼?以及如何使用BEGIN {FS};? BEGIN {FS =「[= | [[:blank:]] +]」};沒有工作 – user2268721

+0

你想'BEGIN {FS =「= | [[:blank:]] +」}'(沒有括號)。這告訴awk字段分隔符是一個等號或一個空白序列。 –