你能帮我解决我的问题从输入数字吗?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应该是可变的。我想让它更具活力。
你能帮我解决我的问题从输入数字吗?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应该是可变的。我想让它更具活力。
试试这个sed
命令。
sed 's/.*\[LIB1: \{0,\}\(.*\)\].*/\1/' file_name
使用变量,
考虑,
match="LIB1"
sed 's/.*\['$match': \{0,\}\(.*\)\].*/\1/' file_name
你可以试试这个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
身高:'打印$ 2 + 0'而是+1的方法 – anubhava 2015-01-21 10:00:28
使用本perl
命令:
perl -lne 'print $1 if(/LIB1:\s+(\d+)\]/)' file
perl的输出也包含数字前的空字符。 – FriZY 2015-01-21 11:21:17
如何到达那里变量而不是LIB1?它应该更具活力。 – FriZY 2015-01-21 11:22:54
@FriZY看到我编辑的答案 – 2015-01-21 11:29:58
的作品!谢谢! – FriZY 2015-01-21 11:41:46