0

我正在尝试删除它:

2012-04-04 07:51:04 (2012-04-04 11:51:04.399000000Z): subject=PROD.

从以下

2012-04-04 07:51:04 (2012-04-04 11:51:04.399000000Z): subject=PROD.sdmp.o.t.0.0.0.0.NewOrderExecutionOE.?.4366.0.2.3.1.TNP.FIDESSA.IBAPPBAL504.EQUITY, message={PL=[10 3 49 46 51 18 3 84 78 80 26 7 70 73 68 69 83 83 65 34 37 79 69 45 50 48 49 50 48 52 48 52 45 48 48 48 48 52 54 55 55 52 48 50 84 82 83 70 49 46 49 46 49 45 48 48 50 49 42 19 78 101 119 79 114 100 101 114 69 120 101 99 117 116 105 111 110 79 69 50 128 8 10 189 4 8 240 46 16 0 24 0 48 0 56 0 64 0 72 2 80 2 88 2 96 0 104 216 29 112 0 120 174 11 128 1 2 136 1 136 165 215 226 231 38 144 1 223 3 152 1 1 160 1 246 181 215 226 231 38 168 1 223 3 176 1 0 194 1 7 70 73 68 69 83 83 65 200 1 1 210 1 37 79 69 45 50 48 49 50 48 52 48 52 45 48 48 48 48 52 54 55 55 52 48 50 84 82 83 70 49 46 49 46 49 45 48 48 50 49 218 1 78 83 85 70 73 32 83 83 32 49 57 48 48 32 83 84 68 32 64 32 55 46 50 55 32 85 83 68 32 65 67 67 79 85 78 84 32 67 83 87 69 45 73 78 86 45 78 77 77 32 67 79 78 84 82 65 32 65 82 67 65 32 83 70 71 45 67 79 82 82 69 83 80 79 78 68 69 78 84 224 1 203 85 242 1 22 67 65 82 77 69 76 79 46 82 85 66 65 78 79 64 83 85 70 73 46 85 83 248 1 30 128 2 213 11 146 2 4 83 85 70 73 152 2 5 168 2 5 176 2 1 186 2 7 16 11 26 3 85 83 68 192 2 142 34 202 2 7 16 3 26 3 83 84 68 146 3 7 70 73 68 69 83 83 65 162 3 46 79 114 100 101 114 73 110 115 116 114 117 99 116 105 111 110 45 50 48 49 50 48 52 48 52 45 48 48 48 48 48 48 48 48 48 50 49 78 79 83 70 49 45 49 45 49 170 3 7 70 73 68 69 83 83 65 186 3 24 79 114 100 101 114 45 50 48 49 50 48 52 48 52 45 50 49 78 79 83 70 49 45 49 192 3 14 202 3 15 65 114 99 97 69 120 69 120 101 99 86 101 110 117 101 208 3 8 218 3 8 78 89 83 69 65 114 99 97 232 3 213 11 250 3 4 83 85 70 73 128 4 5 136 4 203 85 154 4 22 67 65 82 77 69 76 79 46 82 85 66 65 78 79 64 83 85 70 73 46 85 83 160 4 30 168 4 213 11 186 4 4 83 85 70 73 192 4 5 208 4 210 13 226 4 7 85 78 75 78 79 87 78 240 4 85 130 5 4 65 82 67 65 136 5 5 144 5 85 162 5 4 65 82 67 65 168 5 5 184 5 137 244 17 194 5 12 67 83 87 69 45 73 78 86 45 78 77 77 202 5 4 73 66 82 75 208 5 214 188 12 218 5 17 83 70 71 45 67 79 82 82 69 83 80 79 78 68 69 78 84 226 5 4 73 66 82 75 216 6 0 226 6 2 16 0 128 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 58 11 73 66 65 80 80 66 65 76 53 48 52 64 207 247 148 134 237 137 184 231 8] ET[1]=2012-04-04 11:51:01Z}

但我不确定如何使用 awk 或 cut 来执行此操作,无论我做什么,我都无法正确处理。我知道您必须在 awk 中使用 $i,但我无法正确拆分以获得我想要的东西。

任何帮助,将不胜感激。

好的,这是我尝试使用 cut 的方法:

cut -d "." -f3- data.log > dataCut.log

这对大部分文件都有效,但在某些时候它切断了 sdmp。,这是我需要的。

4

5 回答 5

2

如果你有GNU grep那么简单:

grep -Po 'PROD[.]\K.*' file
于 2013-04-29T17:34:00.847 回答
1

一个简单的怎么样cut

cut -c68- file

输出:

sdmp.o.t.0.0.0.0.NewOrderExecutionOE.?.[cut for brevity]

使用相同的方法sed

sed 's/^.\{67\}//' file

使用colrm

$ colrm 1 67 < file

perl

perl -pe 's/^.{67}//' file

最后awk(为了简洁,这里不能击败@kent)

awk 'BEGIN{FIELDWIDTHS="67 9999"}{print$2}' file
于 2013-04-29T19:02:47.510 回答
1

如果只有一个PROD.,你不必用句号“.”分割,你可以:

awk -F'PROD.' '$0=$2' input

或者

awk -F'PROD\\.' '$0=$2' input

但是我猜你PROD.foo.bar可能是动态的,例如,TEST.foo.bar或者DEV.foo.bar...,在这种情况下,你可以采取subject=

awk -F'subject=[A-Z]+\\.' '$0=$2' input

[A-Z]如果有其他可能性,你可以调整。支持 PCRE 的 grep(例如 gnu grep)也可以工作。

于 2013-04-29T19:10:01.493 回答
0

一种方法是使用sub.

awk '{sub(/^[0-9][-0-9:. :)(Z]* subject=PROD./, ""); print;}'

这基本上匹配从“行首”到“主题=产品”的所有内容。并将其替换为空字符串。

于 2013-04-29T17:38:25.403 回答
0

虽然您要求 awk sed很可能是这项工作的工具:

sed -r 's/^.+ subject=PROD\.(.*)/\1/' file
于 2013-04-29T18:15:34.933 回答