Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix命令解析点后的2个字符_Unix_Awk_Sed_Grep - Fatal编程技术网

Unix命令解析点后的2个字符

Unix命令解析点后的2个字符,unix,awk,sed,grep,Unix,Awk,Sed,Grep,我有一个.txt文件(t1.txt),其值如下所示。每组值。我需要做的是遍历每一行并解析出Unix中第一个点后的前2个字符 SBX00.GIATIC.- SBX00.TIATIC.TTT.FAS.- SBX00.SIATIC.SSBSC.CAMI.CRDT,SBX00.GIATIC.SSBSC.CAMI.ISITE GB400.VIATIC.VQ051.CV750T1.D-,SB400.GIATIC.VQ051.CV902T1.D-,SB400.GIATIC.VQ051.CV902S1.D.-

我有一个.txt文件(t1.txt),其值如下所示。每组值。我需要做的是遍历每一行并解析出Unix中第一个点后的前2个字符

SBX00.GIATIC.-
SBX00.TIATIC.TTT.FAS.-
SBX00.SIATIC.SSBSC.CAMI.CRDT,SBX00.GIATIC.SSBSC.CAMI.ISITE
GB400.VIATIC.VQ051.CV750T1.D-,SB400.GIATIC.VQ051.CV902T1.D-,SB400.GIATIC.VQ051.CV902S1.D.-
我希望新文件看起来像:

GI
TI
SI,GI
VI,GI,GI
尝试:

测试:

echo "GB400.VIATIC.VQ051.CV750T1.D-,SB400.GIATIC.VQ051.CV902T1.D-,SB400.GIATIC.VQ051.CV902S1.D.-" \
| sed -e 's/[^,.]*\.\(..\)[^,]*/\1/g'
输出:

VI,GI,GI
尝试:

测试:

echo "GB400.VIATIC.VQ051.CV750T1.D-,SB400.GIATIC.VQ051.CV902T1.D-,SB400.GIATIC.VQ051.CV902S1.D.-" \
| sed -e 's/[^,.]*\.\(..\)[^,]*/\1/g'
输出:

VI,GI,GI

这里有一个您可以使用的
awk
方法

$ awk -F, '{for(i=1;i<=NF;i++){printf "%s",substr($i,index($i,".")+1,2); printf NF==i?"\n":","}}' myfile.txt
GI
TI
SI,GI
VI,GI,GI

$awk-F'{for(i=1;i这里有一个
awk
方法可以使用

$ awk -F, '{for(i=1;i<=NF;i++){printf "%s",substr($i,index($i,".")+1,2); printf NF==i?"\n":","}}' myfile.txt
GI
TI
SI,GI
VI,GI,GI

$awk-F'{for(i=1;iSo,文件中有逗号分隔的字段。在每个字段中,您希望在第一个点后有两个字符。是否正确?您尝试了什么?什么不起作用?因此,文件中有逗号分隔的字段。在每个字段中,您希望在第一个点后有两个字符。是否正确?您尝试了什么?什么不起作用?