Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在awk中使用不同的行分隔符_Awk - Fatal编程技术网

在awk中使用不同的行分隔符

在awk中使用不同的行分隔符,awk,Awk,我的档案如下: cat file 00:29:01|10.3.57.60|dbname1| SELECT re.id, re.event_type_cd, re.event_ts, re.source_type,

我的档案如下:

cat file

00:29:01|10.3.57.60|dbname1| SELECT                                   
    re.id,                                
    re.event_type_cd,                     
    re.event_ts,                          
    re.source_type,                       
    re.source_id,                         
    re.properties                         
 FROM                                     
    table1 re         
 WHERE                                    
    re.id > 621982999
    AND re.id <= 884892348
 ORDER BY                                 
    re.id                                 
^
00:01:00|10.3.56.101|dbname2|BEGIN;declare "SQL_CUR00000000009CE140" cursor for SELECT  id, cast(event_type_cd as character(4)) event_type_cd, CAST(event_ts AS DATE) event_ts, CAST(source_id AS character varying(100)) source_id, CAST(tx_id AS character varying(100)) tx_id, CAST(properties AS character varying(4000)) properties, CAST(source_type AS character(1)) source_type FROM table1 WHERE  ID > 514725989 ORDER BY ID  limit 500000;fetch 500000 in "SQL_CUR00000000009CE140"^
但当我使用:

cat file  | awk -F '|'  -v RS="^"  '{ print FNR "/" $0 }' 
我得到:

1/00:29:01|10.3.57.60|parasol_ams| SELECT                                   
    re.id,                                
    re.event_type_cd,                     
    re.event_ts,                          
    re.source_type,                       
    re.source_id,                         
    re.properties                         
 FROM                                     
    table1 re         
 WHERE                                    
    re.id > 621982999
    AND re.id <= 884892348
 ORDER BY                                 
    re.id                                 

2/
00:01:00|10.3.56.101|parasol_sprint_tep|BEGIN;declare "SQL_CUR00000000009CE140" cursor for SELECT   id, cast(event_type_cd as character(4)) event_type_cd, CAST(event_ts AS DATE) event_ts, CAST(source_id AS character varying(100)) source_id, CAST(tx_id AS character varying(100)) tx_id, CAST(properties AS character varying(4000)) properties, CAST(source_type AS character(1)) source_type FROM table1 WHERE  ID > 514725989 ORDER BY ID  limit 500000;fetch 500000 in "SQL_CUR00000000009CE140"
3/
1/00:29:01 | 10.3.57.60 |阳伞|选择
re.id,
关于事件类型cd,
关于事件,
re.source_类型,
关于来源id,
关于财产
从…起
表1 re
哪里
回复id>621982999
和re.id 514725989按id限制订购500000;在“SQL\u CUR00000000009CE140”中获取500000
3/

太棒了。我需要更多的帮助。我需要使用| as行分隔符打印:1/时间:00:29:01主机:10.3.57.60 DB:parasol_ams SQL:选择。。。2/时间:继续。请帮忙。谢谢
1/00:29:01|10.3.57.60|parasol_ams| SELECT                                   
    re.id,                                
    re.event_type_cd,                     
    re.event_ts,                          
    re.source_type,                       
    re.source_id,                         
    re.properties                         
 FROM                                     
    table1 re         
 WHERE                                    
    re.id > 621982999
    AND re.id <= 884892348
 ORDER BY                                 
    re.id                                 

2/
00:01:00|10.3.56.101|parasol_sprint_tep|BEGIN;declare "SQL_CUR00000000009CE140" cursor for SELECT   id, cast(event_type_cd as character(4)) event_type_cd, CAST(event_ts AS DATE) event_ts, CAST(source_id AS character varying(100)) source_id, CAST(tx_id AS character varying(100)) tx_id, CAST(properties AS character varying(4000)) properties, CAST(source_type AS character(1)) source_type FROM table1 WHERE  ID > 514725989 ORDER BY ID  limit 500000;fetch 500000 in "SQL_CUR00000000009CE140"
3/
 awk '/^\^/{next}/\|/{sub("^",++c"/")}1' file



awk -vRS='^' -F '|' '{sub("^\n","")}{printf "%s/TIME:%s HOST:%s DB:%s SQL:%s",FNR,$1,$2,$3,$4}' file