2016-11-01 107 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

相關問題