1

全て、

ログからこの SQL クエリを取得する sed (ksh は初めてです) を使用して KSH スクリプトを作成しようとしていますが、タイムスタンプとそれに続く 6 文字/スペースを無視したいと考えています。これが私がこれまでに持っているコードです...

cat file.log \
| sed -n '/---Query1/,/selected/p' \
| sed 's/^([0-9][0-9]:[0-9][0-9]:[0-9][0-9]??????)//g' \    # My problem
> newfile.log

===Input===

11:23:34 SQL> ---Query1    
11:23:34 SQL> select a.column1, b.column2, count(*)
11:23:34   2  from table1 a, table2 b
11:23:34   3  group by a.column1
11:23:34   4  order by 1, 2, 3;

a.column1   a.column2   count(*)
----------- ----------- ----------
foo         bar         32

1 row selected.


===Desired Output===

---Query1
select a.column1, b.column2, count(*)
from table1 a, table2 b
group by a.column1
order by 1, 2, 3;

a.column1   a.column2   count(*)
----------- ----------- ----------
foo         bar         32

1 row selected.

あなたが提供できるどんな助けも大歓迎です。

4

3 に答える 3

1

これはうまくいくかもしれません(GNU sed):

 sed -r 's/^..:..:...{6}//' file
于 2013-05-06T19:15:13.057 に答える
1

サンプルデータで少しテストを行ったところ、ここで機能しました:

 sed -r '/^[0-9][0-9]:[0-9][0-9]/{s/^.*SQL> *//;s/^[0-9:]* +[0-9]+ +(.)/\1/}' file
于 2013-05-06T17:29:19.147 に答える