Как распечатать два поля из текстового файла? - PullRequest
1 голос
/ 19 июня 2020

У меня есть файл журнала на моем компьютере, содержащий нижеприведенное содержание.

2020-06-18 00:01:31|INFO|0||pro_upl_postpaid_trap|ComUpload|CUploadProcessRemoteFile.cpp[95]|rename remote file success,source filename=/file_src/localusers/data/TRAP_CBS/recv/ovou20200617_999_400280.unl.temp,destination filename=/file_src/localusers/data/TRAP_CBS/recv/**ovou20200617_999_400280.unl**
2020-06-18 00:01:32|INFO|0||pro_upl_postpaid_trap|ComUpload|CUploadProcessRemoteFile.cpp[95]|rename remote file success,source filename=/file_src/localusers/data/TRAP_CBS/recv/ocom20200617_512_400106.unl.temp,destination filename=/file_src/localusers/data/TRAP_CBS/recv/ocom20200617_512_400106.unl
2020-06-18 00:01:32|INFO|0||pro_upl_postpaid_trap|ComUpload|CUploadProcessRemoteFile.cpp[95]|rename remote file success,source filename=/file_src/localusers/data/TRAP_CBS/recv/ocom20200617_515_400184.unl.temp,destination filename=/file_src/localusers/data/TRAP_CBS/recv/ocom20200617_515_400184.unl
2020-06-18 00:01:33|INFO|0||pro_upl_postpaid_trap|ComUpload|CUploadProcessRemoteFile.cpp[95]|rename remote file success,source filename=/file_src/localusers/data/TRAP_CBS/recv/odata20200617_517_400092.unl.temp,destination filename=/file_src/localusers/data/TRAP_CBS/recv/odata20200617_517_400092.unl

Я хотел напечатать 3 поля из этого файла журнала, как показано ниже:

2020-06-18 00:01:31|**ovou20200617_999_400280.unl**

Я смог распечатать последнее поле, но не смог распечатать обе даты / time (2020-06-18 00:01:31) и имя файла (ovou20200617_999_400280.unl) вместе .. !!!

cat pro_upl_*_trap_$YestodayDate*|grep 'CUploadProcessRemoteFile.cpp' |awk -F "/" '{print $19}'

Любые подсказки / помощь будут очень признательны.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Не уверен, почему вы ищете CUploadProcessRemoteFile.cpp, когда он присутствует в каждой строке, но если у вас есть причина для этого, вам никогда не понадобится grep, когда вы используете awk, и вы тоже нужно cat, чтобы открыть входной файл для awk:

$ awk -F'[|/]' -v OFS='|' '/CUploadProcessRemoteFile\.cpp/{print $1, $NF}' file
2020-06-18 00:01:31|**ovou20200617_999_400280.unl**
2020-06-18 00:01:32|ocom20200617_512_400106.unl
2020-06-18 00:01:32|ocom20200617_515_400184.unl
2020-06-18 00:01:33|odata20200617_517_400092.unl
0 голосов
/ 19 июня 2020

Вы можете использовать awk с несколькими разделителями:

awk -F'[|/]' '{print $1, $NF}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...