xyz /mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18,/forceproxy/true/name/new
在这一行中,这部分,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18,
是可变的,因此它可能是各部分中逗号之间的数据数量更多或更少,xyz /mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_
除了数值 1926081 或 192608100 可以增加或减少之外,一切都是恒定的。/forceproxy/true/name/new
也是一个常数并且不会改变
我想要的输出是只有模式,n6h1xlhl,ea3anltg,jfs8boo9,w2v1vsk2,ze8e1q2s,to8w2p18,
is included and rest is deleted including any comma and the initial
xyz`的最后一个值
所以应该是:
/mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_to8w2p18/forceproxy/true/name/new
答案1
awk 'BEGIN {FS="[, ]"} {print $2$(NF-1)$NF}' input_filename
答案2
如果munish.txt
包含您提供的示例数据,则:
$ sed -e 's/^[^ ]* //; s/,.*,\([^,]*\),/\1/' munish.txt
/mnp/opq/p/1926081/sp/192608100/serveFlavor/entryId/0_ffx7sljc/v/2/flavorId/0_to8w2p18/forceproxy/true/name/new
此sed
脚本删除一行中直到并包括第一个空格的所有内容,以及从第一个,
到倒数第二个的所有内容,
。还删除最后的,
.
答案3
我想出了一种奇怪的方法,当变量v
包含整行时,它看起来不太好
echo $(echo ${v%%,*})$(echo ${v} | grep -Po '.*,\K.*(?=,)')$(echo ${v##*,}) | sed 's/xyz\s//p'