我怎样才能从这一行提取数据?

我怎样才能从这一行提取数据?
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 initialxyz`的最后一个值

所以应该是: /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'

相关内容