如何在包含特殊字符的行中执行命令 "grep -oP"?
How to do command "grep -oP" in a line that contains special Characters?
如何 grep 包含特殊字符的行。
例如,我有一个包含此文本的文件
ISA^G00^G ^G00^G ^G12^G14147844480 ^GZZ^G001165208 ^G160601^G1903^GU^G00401^G600038486^G0^GP^G>~GS^GTX^G14147844480^G001165208^G20160601^G1903^G600038486^GX^G004010VICS~ST^G864^G384860001~BMG^G00^G^G04~MIT^G000000591^GKohl's AS2 Certificate Change June 21, 2016~N1^GFR^GKOHL'S DEPARTMENT STORES~PER^GIC^GEDIMIO@kohls.com^GTE^G262-703-7334~MSG^GAttention Kohl's AS2 trading partners, Kohl's will be changing.
我想grep MSG段下的行
使用这个命令:
grep -oP 'MSG.\K[\w\s\d]*' < 文件名
预期结果:
Kohl's AS2 贸易伙伴请注意,Kohl's 将会发生变化。
实际结果:
注意科尔
我该怎么做?
你只想在 MSG 之后 grep 一切吗?使用其他方法会更简单。
我还看到您的文件中有多个 ^G
字符,与 MSG 字相邻。不确定在 grep 时是否要排除这些。
返回给定的正则表达式 - 您可以添加 \W
来匹配非单词字符并给出您想要的结果。
grep -oP 'MSG.\K[\w\s\d\W]*' filename
也不需要在此处使用 <
运算符来 grep
。
你的模式:
grep -Po 'MSG.\K[\w\s\d]*'
仅与 Attention Kohl
匹配,因为单引号后的单引号不会与任何 \w
、\s
、\d
标记匹配。
您还需要 ,
和 .
,因此您也需要匹配它们。此外,\d
实际上是 \w
的子集,因此不需要显式 \d
.
所以你可以这样做:
grep -Po 'MSG.\K[\w\s,.'\'']*'
或者如果你只想匹配到最后:
grep -Po 'MSG.\K.*'
如何 grep 包含特殊字符的行。
例如,我有一个包含此文本的文件
ISA^G00^G ^G00^G ^G12^G14147844480 ^GZZ^G001165208 ^G160601^G1903^GU^G00401^G600038486^G0^GP^G>~GS^GTX^G14147844480^G001165208^G20160601^G1903^G600038486^GX^G004010VICS~ST^G864^G384860001~BMG^G00^G^G04~MIT^G000000591^GKohl's AS2 Certificate Change June 21, 2016~N1^GFR^GKOHL'S DEPARTMENT STORES~PER^GIC^GEDIMIO@kohls.com^GTE^G262-703-7334~MSG^GAttention Kohl's AS2 trading partners, Kohl's will be changing.
我想grep MSG段下的行
使用这个命令:
grep -oP 'MSG.\K[\w\s\d]*' < 文件名
预期结果:
Kohl's AS2 贸易伙伴请注意,Kohl's 将会发生变化。
实际结果:
注意科尔
我该怎么做?
你只想在 MSG 之后 grep 一切吗?使用其他方法会更简单。
我还看到您的文件中有多个 ^G
字符,与 MSG 字相邻。不确定在 grep 时是否要排除这些。
返回给定的正则表达式 - 您可以添加 \W
来匹配非单词字符并给出您想要的结果。
grep -oP 'MSG.\K[\w\s\d\W]*' filename
也不需要在此处使用 <
运算符来 grep
。
你的模式:
grep -Po 'MSG.\K[\w\s\d]*'
仅与 Attention Kohl
匹配,因为单引号后的单引号不会与任何 \w
、\s
、\d
标记匹配。
您还需要 ,
和 .
,因此您也需要匹配它们。此外,\d
实际上是 \w
的子集,因此不需要显式 \d
.
所以你可以这样做:
grep -Po 'MSG.\K[\w\s,.'\'']*'
或者如果你只想匹配到最后:
grep -Po 'MSG.\K.*'