我想在File中找到例如以下字符串9Stest1.test2D9。然后我想剪切前2个charechter和最后2个charechter,最后打印文本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
可以轻松解决我的问题,但我不知道怎么做。
感谢
答案 0 :(得分:4)
如果有帮助,请看这一行:
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'
答案 1 :(得分:1)
这取决于搜索的方式和内容。与**
awk -F"**" '{a=substr($2,3,length($2)-4)} a {print a}'
test1.test2
dO:ZQnI8t989f