1

我在 Unix 中有一个文件,包含以下内容。

{
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)

4

3 回答 3

1

如果你知道数字在第23行,你可以使用一个sed如下图:

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

或者,您可以V_MAX_BATCH_ID使用单行查找并选择其下方的第二行sed,如下所示:

$ foo=$(sed -n '/^V_MAX_BATCH_ID/{n;n;s/ *//p}' file)
$ echo "$foo"
9
于 2013-06-03T07:57:11.997 回答
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. 去掉所有空格。
于 2013-06-03T07:21:21.053 回答
0
awk '/^V_MAX_BATCH_ID$/{getline;getline;gsub(/ /,"");print}' your_file
于 2013-06-03T07:30:50.627 回答