[英]Found string with regex in AWK or SED
例如,我想在File中找到以下字符串9Stest1.test2D9。 然后我要剪切前2个字符,最后2个字符,最后在befor及其之后打印文本。 在两条分开的线。
范例文字:
7U8vTest(#G-HLjYM6QqJj1j"7MFx$^Qd
.f@alU|A#Z<inCWV6a=L?o`A5vIod"%Mm+YW1RM@,L;aN
r^n<&)}[??!VcVIV**9Stest1.test2D9**94EN~yK,$lU=9?UT.[
e`)G:FS.nGz%?@~k!20aLJ^PU-[@}0W\ !8x
cujOmEK"1;!cI134lu%0-A +/t!VIf?8uT`!
aC1QAQY>4RE$46iVjAE^eo5yR|
1?/T?<H5,%G~[|9I/c&8MY$O]%,UYQe{!{Bm[rRC[
aHC`<m?BUau@N_O>Yct.MXo[>r5^uV&26@MkYB'Kiu\Y
K(*}ldO:ZQnI8t989fi+
输出应为:
test1
test2
我已经尝试使用以下代码grep "[0-9][a-zA-Z]\\+\\.[a-zA-Z]\\+[0-9]"
来查找字符串。现在我可以切割冷杉了两行带cut command
但最后两行? 我认为使用AWK
可以轻松解决我的问题,但我不知道如何解决。 谢谢
如果有帮助,请参阅此行:
kent$ grep -Po '(?<=9S).*?(?=D9)' file
test1.test2
或更动态,这适用于您的示例:
kent$ grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' file
test1.test2
编辑
如@devnull建议,要获得所需的输出,您可以
grep -Po '(?<=\d[a-zA-Z]).*\..*(?=[a-zA-Z]\d)' file|tr '.' '\n'
这取决于搜索方式和搜索内容。 像**
之间的文字
awk -F"**" '{a=substr($2,3,length($2)-4)} a {print a}'
test1.test2
dO:ZQnI8t989f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.