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、シングルを使用してその下の 2 行目を探して選択することもできます。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. 次の行から、1 桁の数字のみを含む行のみを出力します。
  3. すべての空白を取り除きます。
于 2013-06-03T07:21:21.053 に答える