UNIX Shell脚本只获得需要从文件内容行 [英] Unix Shell Script get only needed lines from a file content
问题描述
修改
我有一个包含字符串的行的文件
mediafire.com/?a6o37kfc7m68dri
注:媒体防火该文件实际上是logs.out我刚刚重新命名为logs.txt当我uploded它
。例如内容:(logs.out)
BIF在bif_init>登陆成功
BIF在DBINIT>信息:DB状态:20,成功的
BIF在DBINIT> INFO:获取文件名需要时查询数据库。尺寸(0)
BIF在DBINIT> INFO:获取文件名需要时查询数据库。尺寸(30)
BIF在modInit> INFO:modInit完成
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:DISPUTE_AMOUNT / 0
BIF在setInputTag>设置输入标签值,名称/值:NOD_FLAG / 0
BIF在setInputTag>设置输入标签值,名称/值:OUTSTANDING_BALANCE / 12904
BIF在setInputTag>设置输入标签值,名称/值:TOTAL_DUE / 12904
BIF在运行> INFO:updateParameterValues完成
BIF中的GetFile> INFO:当前发票Feed文件(/arbordata/feedfile/PS-M07-1205-20130807-20130911-201711-1-bif01.DAT)
BIF在insertNewFile> m_pcurFileNameAttr-> file_seq_no:(1)
BIF在insertNewFile> INFO:输出FileHeader里(000020130911201711
),以feedfile,成功
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:DISPUTE_AMOUNT / 0
BIF在setInputTag>设置输入标签值,名称/值:NOD_FLAG / 0
BIF在setInputTag>设置输入标签值,名称/值:OUTSTANDING_BALANCE / 12904
BIF在setInputTag>设置输入标签值,名称/值:TOTAL_DUE / 12904
BIF在addInheritedByField>信息:成功把现场(BILLZIP code)项的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLEDACCOUNTNUMBER)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLNUMBER)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLNUMBERRESETS)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(OWNINGACCOUNTNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBERRESET)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(DEFAULTEXTERNALID)的继承值到SI inherited_map
BIF在InvoiceRecord>信息:输出数据为SI地图,成功的。 SI = 2813096,0
BIF在addInheritedByField>信息:成功把现场(OWNINGACCOUNTNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBERRESET)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(DEFAULTEXTERNALID)的继承值到SI inherited_map
BIF在InvoiceRecord>信息:输出数据为SI地图,成功的。 SI = 13415970,0
BIF在addInheritedByField>信息:成功把现场(OWNINGACCOUNTNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBER)的继承值到SI inherited_map
BIF在addInheritedByField>信息:成功把现场(SUBSCRBNUMBERRESET)的继承值到SI inherited_map
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:DISPUTE_AMOUNT / 0
BIF在setInputTag>设置输入标签值,名称/值:NOD_FLAG / 0
BIF在setInputTag>设置输入标签值,名称/值:OUTSTANDING_BALANCE / 164888
BIF在setInputTag>设置输入标签值,名称/值:TOTAL_DUE / 164888
BIF在运行> INFO:updateParameterValues完成
BIF中的GetFile> INFO:当前发票Feed文件(/arbordata/feedfile/PS-M02-1204-20130602-20130911-201711-1-bif01.DAT)
BIF在insertNewFile> m_pcurFileNameAttr-> file_seq_no:(1)
BIF在insertNewFile> INFO:输出FileHeader里(000020130911201711
),以feedfile,成功
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:DISPUTE_AMOUNT / 0
BIF在setInputTag>设置输入标签值,名称/值:NOD_FLAG / 0
BIF在setInputTag>设置输入标签值,名称/值:OUTSTANDING_BALANCE / 164888
BIF在setInputTag>设置输入标签值,名称/值:TOTAL_DUE / 164888
BIF在addInheritedByField>信息:成功把现场(BILLZIP code)项的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLEDACCOUNTNUMBER)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLNUMBER)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(BILLNUMBERRESETS)的继承值到ACCT地图
BIF在addInheritedByField>信息:成功把现场(OWNINGACCOUNTNUMBER)的继承值到SI inherited_map
只有想有一行:
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402
BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
和我要输出它与像这样格式的文件:(horizontaly和管道分隔符)
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 4302253 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 199863752 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
BIF在setInputTag>设置输入标签值,名称/值:account_no上/ 2726650 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_no / 190155402 | BIF在setInputTag>设置输入标签值,名称/值:bill_ref_resets / 1
请帮助我:(
我想创建.SH文件,它会在运行腻子
执行此$ C $当c,它正在
SED -n -e'/value:ACCOUNT_NO/{N;N;s/..\
\\(.\\)/|\\1/g;p;}' logs.out> OUPUT_logs.out
但是当
SED -n -e'/value:ACCOUNT_NO/{N;N;s/..\
\\(.\\)/|\\1/g;p;}' logs.out> OUPUT_logs.txt
疗法是空行每条记录的。
SED -n -e'/值:account_no上/ {N; N; S / \\ N / | / g的; p;}logs.txt> outfile.txt
编辑:
我修改了上面的命令,以将输出重定向到一个文件,但我们纠正它输出更重要。我测试过使用例如 logs.txt
你给的命令;我不知道有足够的了解您的系统,说为什么这是行不通的存在,让我们的实验。试试这个:
SED -n -e'/值:account_no上/ P'logs.txt
什么是输出?
编辑:
到目前为止,一切都很好。现在试试这个:
SED -n -e'/值:account_no上/ {磷;}'logs.txt
相同的输出?
编辑:
好!现在:
SED -n -e'/值:account_no上/ {N; N; P;}'logs.txt
什么是输出?
编辑:
最后一步,我们重定向到 outputfile.txt
,然后取出换行。作为@ ChrisJester-Young说,我们可以删除尾随空格在相同的步骤:
SED -n -e'/值:account_no上/ {N; N; S / \\ N / | /; p;}'logs.txt> outputfile.txt
修改
试试这个,让我们把它叫做 code 6
SED -n -e'/value:ACCOUNT_NO/{N;N;s/..\
/|/g;p;}'logs.txt> outputfile.txt
编辑:
问题是,你的 logs.txt
具有DOS风格的行结束。我认为,code 6它们更改为UNIX风格,超编辑警告你,他们很奇怪。试试这个( code 7 )
SED -n -e'/value:ACCOUNT_NO/{N;N;s/..\
\\(.\\)/|\\1/g;p;}'
EDIT
I have a file containing line of strings
mediafire.com/?a6o37kfc7m68dri
NOTE: that file on media fire is actually "logs.out" i've just renamed it to logs.txt when i uploded it.
example Content:(logs.out)
BIF in bif_init> login successful
BIF in dbInit> INFO: DB status:20,successful
BIF in dbInit> INFO: get the fileName need be query DB. Size(0)
BIF in dbInit> INFO: get the fileName need be query DB. Size(30)
BIF in modInit> INFO: modInit finished
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253
BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:DISPUTE_AMOUNT/0
BIF in setInputTag> set input tag value, name/value:NOD_FLAG/0
BIF in setInputTag> set input tag value, name/value:OUTSTANDING_BALANCE/12904
BIF in setInputTag> set input tag value, name/value:TOTAL_DUE/12904
BIF in run> INFO: updateParameterValues finished
BIF in getFile> INFO: Feed file(/arbordata/feedfile/PS-M07-1205-20130807-20130911-201711-1-bif01.DAT) for current invoice
BIF in insertNewFile> m_pcurFileNameAttr->file_seq_no:(1)
BIF in insertNewFile> INFO:Output fileHeader(000020130911201711
) to feedfile,successful
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253
BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:DISPUTE_AMOUNT/0
BIF in setInputTag> set input tag value, name/value:NOD_FLAG/0
BIF in setInputTag> set input tag value, name/value:OUTSTANDING_BALANCE/12904
BIF in setInputTag> set input tag value, name/value:TOTAL_DUE/12904
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLZIPCODE) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLEDACCOUNTNUMBER) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLNUMBER) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLNUMBERRESETS) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(OWNINGACCOUNTNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBERRESET) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(DEFAULTEXTERNALID) into SI inherited_map
BIF in InvoiceRecord> INFO: Output data to SI map,successful. SI=2813096,0
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(OWNINGACCOUNTNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBERRESET) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(DEFAULTEXTERNALID) into SI inherited_map
BIF in InvoiceRecord> INFO: Output data to SI map,successful. SI=13415970,0
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(OWNINGACCOUNTNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBER) into SI inherited_map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(SUBSCRBNUMBERRESET) into SI inherited_map
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650
BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:DISPUTE_AMOUNT/0
BIF in setInputTag> set input tag value, name/value:NOD_FLAG/0
BIF in setInputTag> set input tag value, name/value:OUTSTANDING_BALANCE/164888
BIF in setInputTag> set input tag value, name/value:TOTAL_DUE/164888
BIF in run> INFO: updateParameterValues finished
BIF in getFile> INFO: Feed file(/arbordata/feedfile/PS-M02-1204-20130602-20130911-201711-1-bif01.DAT) for current invoice
BIF in insertNewFile> m_pcurFileNameAttr->file_seq_no:(1)
BIF in insertNewFile> INFO:Output fileHeader(000020130911201711
) to feedfile,successful
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650
BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:DISPUTE_AMOUNT/0
BIF in setInputTag> set input tag value, name/value:NOD_FLAG/0
BIF in setInputTag> set input tag value, name/value:OUTSTANDING_BALANCE/164888
BIF in setInputTag> set input tag value, name/value:TOTAL_DUE/164888
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLZIPCODE) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLEDACCOUNTNUMBER) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLNUMBER) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(BILLNUMBERRESETS) into ACCT map
BIF in addInheritedByField> INFO: Succeed to put the inherited value of field(OWNINGACCOUNTNUMBER) into SI inherited_map
Only line that wanted to have:
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253
BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253
BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650
BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650
BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402
BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
and i want to output it into a file with the format like this:(horizontaly and with pipe delimiter)
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253|BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752|BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/4302253|BIF in setInputTag> set input tag value, name/value:bill_ref_no/199863752|BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650|BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402|BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
BIF in setInputTag> set input tag value, name/value:ACCOUNT_NO/2726650|BIF in setInputTag> set input tag value, name/value:bill_ref_no/190155402|BIF in setInputTag> set input tag value, name/value:bill_ref_resets/1
PLEASE HELP ME :( I want to create .sh file and it will run on PuTTy
when executing this code it is working
sed -n -e '/value:ACCOUNT_NO/{N;N;s/..\n\(.\)/|\1/g;p;}' logs.out> OUPUT_logs.out
BUT WHEN
sed -n -e '/value:ACCOUNT_NO/{N;N;s/..\n\(.\)/|\1/g;p;}' logs.out> OUPUT_logs.txt
ther is "BLANK LINE" between every record.
sed -n -e '/value:ACCOUNT_NO/{N;N;s/\n/|/g;p;}' logs.txt > outfile.txt
EDIT:
I've modified the command above to redirect the output to a file, but it's more important that we correct the output. I've tested the command using the example logs.txt
you gave; I don't know enough about your system to say why it doesn't work there, so let us experiment. Try this:
sed -n -e '/value:ACCOUNT_NO/p' logs.txt
What is the output?
EDIT:
So far, so good. Now try this:
sed -n -e '/value:ACCOUNT_NO/{p;}' logs.txt
Same output?
EDIT:
Good! Now:
sed -n -e '/value:ACCOUNT_NO/{N;N;p;}' logs.txt
What is the output?
EDIT:
Last step, we redirect to outputfile.txt
and remove the newlines. As @ChrisJester-Young said, we can remove the trailing spaces in the same step:
sed -n -e '/value:ACCOUNT_NO/{N;N;s/ \n/|/;p;}' logs.txt > outputfile.txt
EDIT
Try this, and let's call it code 6:
sed -n -e '/value:ACCOUNT_NO/{N;N;s/..\n/|/g;p;}' logs.txt > outputfile.txt
EDIT:
The problem is that your logs.txt
has DOS-style line endings. I think that Code 6 changes them to UNIX-style, and ultra edit is warning you that they are strange. Try this (code 7):
sed -n -e '/value:ACCOUNT_NO/{N;N;s/..\n\(.\)/|\1/g;p;}'
这篇关于UNIX Shell脚本只获得需要从文件内容行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!