2015-01-21 96 views
0

你能幫我解決我的問題從輸入數字嗎?BASH |得到括號之間的文字

我輸入這樣的事情:

Good [AA0060] [LIB1: 61]  No 02/11/15 08:38:46 

,我想LIB1後能得到數量:

61 

問題是,我還可以獲得輸入這樣的:

Good [AA0060] AA0060 [LIB1: 61]  No 02/11/15 08:38:46 

更新:LIB1應該是可變的。我想讓它更具活力。

回答

0

試試這個sed命令。

sed 's/.*\[LIB1: \{0,\}\(.*\)\].*/\1/' file_name 

使用變量,

考慮,

match="LIB1" 

sed 's/.*\['$match': \{0,\}\(.*\)\].*/\1/' file_name 
+0

如何到達那裏變量而不是LIB1?它應該更具活力。 – FriZY 2015-01-21 11:22:54

+0

@FriZY看到我編輯的答案 – 2015-01-21 11:29:58

+0

的作品!謝謝! – FriZY 2015-01-21 11:41:46

1

你可以試試這個awk命令

awk -FLIB1: '{print $2--}' FileName 

awk -FLIB1: '{print $2+0}' FileName 

例子:

echo "Good [AA0060] AA0060 [LIB1: 61]  No 02/11/15 08:38:46" | awk -FLIB1: '{print $2--}' 

輸出:

61 
+0

身高:'打印$ 2 + 0'而是+1的方法 – anubhava 2015-01-21 10:00:28

0

使用本perl命令:

perl -lne 'print $1 if(/LIB1:\s+(\d+)\]/)' file 
+0

perl的輸出也包含數字前的空字符。 – FriZY 2015-01-21 11:21:17

相關問題