-1

I have a big transaction log file. Under that are XML response strings (especially on erricson IN log). I want the response code and this value only. Currently when I grep this on linux all the complete string is coming.

Below is my log entry:

2015-05-18 13:01:33,817 UserMsisdn=919813290710,:: CustomerMsisdn=919671055440Stage is TOP:: After reading complete data from IN::<?xml version="1.0" encoding="UTF-8"?><methodResponse><params><param><value><struct><member><name>accountAfterRefill</name><value><struct><member><name>accountFlags</name><value><struct><member><name>activationStatusFlag</name><value><boolean>1</boolean></value></member><member><name>negativeBarringStatusFlag</name><value><boolean>0</boolean></value></member><member><name>serviceFeePeriodExpiryFlag</name><value><boolean>0</boolean></value></member><member><name>serviceFeePeriodWarningActiveFlag</name><value><boolean>0</boolean></value></member><member><name>supervisionPeriodExpiryFlag</name><value><boolean>0</boolean></value></member><member><name>supervisionPeriodWarningActiveFlag</name><value><boolean>0</boolean></value></member></struct></value></member><member><name>accountValue1</name><value><string>9058</string></value></member><member><name>offerInformationList</name><value><array><data><value><struct><member><name>expiryDate</name><value><dateTime.iso8601>20150520T12:00:00+0000</dateTime.iso8601></value></member><member><name>offerID</name><value><i4>2220</i4></value></member><member><name>offerType</name><value><i4>0</i4></value></member><member><name>startDate</name><value><dateTime.iso8601>20150505T12:00:00+0000</dateTime.iso8601></value></member></struct></value><value><struct><member><name>expiryDate</name><value><dateTime.iso8601>99991231T12:00:00+0000</dateTime.iso8601></value></member><member><name>offerID</name><value><i4>2692</i4></value></member><member><name>offerType</name><value><i4>0</i4></value></member><member><name>startDate</name><value><dateTime.iso8601>20100226T12:00:00+0000</dateTime.iso8601></value></member></struct></value></data></array></value></member><member><name>serviceClassCurrent</name><value><i4>2742</i4></value></member><member><name>serviceOfferings</name><value><array><data><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>1</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>2</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>3</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>4</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>5</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>6</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>7</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>8</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>9</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>10</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>11</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>12</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>13</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>14</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>15</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>16</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>17</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>18</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>19</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>20</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>21</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>22</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>23</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>24</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>25</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>26</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>27</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>28</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>29</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>30</i4></value></member></struct></value><value><struct><member><name>serviceOfferingActiveFlag</name><value><boolean>0</boolean></value></member><member><name>serviceOfferingID</name><value><i4>31</i4></value></member></struct></value></data></array></value></member><member><name>usageAccumulatorInformation</name><value><array><data><value><struct><member><name>accumulatorID</name><value><i4>2212</i4></value></member><member><name>accumulatorValue</name><value><i4>0</i4></value></member></struct></value><value><struct><member><name>accumulatorID</name><value><i4>2253</i4></value></member><member><name>accumulatorValue</name><value><i4>0</i4></value></member></struct></value></data></array></value></member></struct></value></member><member><name>availableServerCapabilities</name><value><array><data><value><i4>537207364</i4></value></data></array></value></member><member><name>currency1</name><value><string>INR</string></value></member><member><name>languageIDCurrent</name><value><i4>1</i4></value></member><member><name>masterAccountNumber</name><value><string>9671055440</string></value></member><member><name>negotiatedCapabilities</name><value><array><data><value><i4>0</i4></value></data></array></value></member><member><name>originTransactionID</name><value><string>HR1573404963</string></value></member><member><name>refillType</name><value><i4>3</i4></value></member><member><name>**responseCode</**name><value**><i4>0</i4></**value></member><member><name>segmentationID</name><value><string>N200</string></value></member><member><name>transactionAmount</name><value><string>8600</string></value></member><member><name>transactionCurrency</name><value><string>INR</string></value></member></struct></value></param></params></methodResponse>

Below is the command I used for this, but it is not working properly:

grep 'responseCode' TransactionLog.log.21_05_2015-12|egrep "<member>.*</member>"

Expected output will be:

responseCode</name><value><i4>0</i4>
andyroberts
  • 3,458
  • 2
  • 37
  • 40

1 Answers1

0

The log entries are very long lines of XML. The grep command only finds whole lines that contain a matching pattern. The grep command has found a matching line and outputs it for you - it is just that it is a very long line.

You want to extract just a part of the line that it has found. That is best done with another tool, such as perl or awk. You could also use sed to chop the single line into many lines at the member tag and then grep for the particular item you wanted.

Using sed to add newlines is a bit awkward, but it is explained in this question/answer: How to insert a newline in front of a pattern?

To break the line at every <member> clause you can write this:

sed -e 's/<member>/\'$'\n<member>/g'

Then you can select only the ResponseCode section, giving:

grep responseCode Transaction.log | sed -e 's/<member>/\'$'\n<member>/g' | grep responseCode

The output generated is now:

<member><name>**responseCode</**name><value**><i4>0</i4></**value></member>

You can now chop that down a bit more with sed:

grep responseCode Transaction.log | sed -e 's/<member>/\'$'\n<member>/g' | grep responseCode | \
sed -e 's/<member><name>//g' -e 's/<\/name>//g' -e 's/<\/value>//g' -e 's/<\/member>//g'

.. and now it should be trivial to get the format that you actually want.

Community
  • 1
  • 1
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129