2015-01-21 95 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

相关问题