2016-11-01 108 views
-3

我有一个文件,ABDC.DELTA00.TS.D20161022.TS_BAR99.DAT.DOCC提取两个字符串之间的字符串

我想剪切两个字符串之间的文本:第一个TSDOCC。我试图

​​

导致_BAR99.DAT –匹配在文件名中第二TS

期望的结果:.TS.D20161022.TS_BAR99.DAT.

如何修改我的sed命令来达到预期的效果?

+0

regexes是贪婪的。所以'。* TS'将尽可能地匹配字符串,这意味着它将匹配字符串中的最后一个'TS'。 –

+0

谢谢Marc B,有没有办法实现预期结果 –

+0

'(TS。* \。DOCC)'而不是?这将迫使它在TS/DOCC之间尽可能匹配,捕获“第二”作为其中的一部分。 –

回答

0
echo "ABDC.DELTA00.TS.D20161022.TS_BAR99.DAT.DOCC" | sed 's/^.*\.TS\./.TS./;s/\.DOCC/./' 
+0

真棒,它的工作..我会尝试通过变量来调用它们。 –

+0

Stro - 我试图调用变量,但我没有得到相同的结果。 ==>回声$ V1 TS ==>回声$ V2 DOCC ==>回声$文件名 ABDC.DELTA00.TS.D20161022.TS_BAR99.DAT.DOCC ==>回声$文件名| sed“s /^.*\.$ v1 \ ./.$ v1 ./; s/\ $ v2> .TS.D20161022.TS_BAR99.DAT.DOCC 预期结果:.D20161022.TS_BAR99.DAT。 –

+0

'''#/斌/庆典 V1 = TS V2 = DOCC 名= ABDC.DELTA00.TS.D20161022.TS_BAR99.DAT.DOCC 回声$文件名!| sed的“S /^.*\.$ V1 \ ./.$ v1./;s/\.$v2//“''' – strobelight

相关问题