2013-06-03 31 views
1

我在Unix中有一个文件,并且有以下containt。如何从以下文件中删除一个数字

{ 
BTEQ 13.10.00.06 Mon Jun 3 03:01:13 2013 

+---------+---------+---------+---------+---------+---------+---------+---- 
logon TDDEV/TVDW_APP, 

*** Logon successfully completed. 
*** Teradata Database Release is 13.00.01.06     
*** Teradata Database Version is 13.00.01.06      
*** Transaction Semantics are BTET. 
*** Session Character Set Name is 'ASCII'. 

*** Total elapsed time was 1 second. 

+---------+---------+---------+---------+---------+---------+---------+---- 
call TVDW_APP.PROC_OPO_GET_MAX_BATCH_ID(V_MAX_BATCH_ID); 

*** Procedure has been executed. 
*** Total elapsed time was 1 second. 

V_MAX_BATCH_ID 
-------------- 
      9 

+---------+---------+---------+---------+---------+---------+---------+---- 
*** BTEQ exiting due to EOF on stdin. 

*** Exiting BTEQ... 
*** RC (return code) = 0 
} 

我想从这个文件中提取数字“9”并将它分配给一个变量。 我该怎么做?请帮忙。 (我书面方式一个ksh的文件用于此目的;数字9是在第22行,字符11至14)

回答

1
sed "1,/^V_MAX_BATCH_ID/d" < input.txt | sed -n "/^\s*[0-9]\s*$/p" | sed "s/\s//g") 
  1. 删除所有排队V_MAX_BATCH_ID
  2. 从下面的行中只打印那些只包含一个数字的行。
  3. 删除所有空格。
0
awk '/^V_MAX_BATCH_ID$/{getline;getline;gsub(/ /,"");print}' your_file 
+0

为什么'gsub(/ /,“”); print'?为什么不打印$ 1? – devnull

1

如果你知道这个号码是23号线,您可以使用一个sed,如下图所示:

$ foo=$(sed -n '23s/^ *//p' file) 
$ echo "$foo" 
9 

或者,你可以看看V_MAX_BATCH_ID并选择第二行如下所示:

$ foo=$(sed -n '/^V_MAX_BATCH_ID/{n;n;s/ *//p}' file) 
$ echo "$foo" 
9 
相关问题