在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