我有一个.txt文件(t1.txt),其中包含以下值。每组价值观。我需要做的是遍历每一行并解析Unix中第一个点后的前两个字符。
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
答案 0 :(得分:5)
尝试:
sed -e 's/[^,.]*\.\(..\)[^,]*/\1/g' myfile.txt
测试:
echo "GB400.VIATIC.VQ051.CV750T1.D-,SB400.GIATIC.VQ051.CV902T1.D-,SB400.GIATIC.VQ051.CV902S1.D.-" \
| sed -e 's/[^,.]*\.\(..\)[^,]*/\1/g'
输出:
VI,GI,GI
答案 1 :(得分:1)
这是您可以使用的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
简要说明:
-F,
:将字段分隔符设置为&#39;,&#39; substr($i,index($i,".")+1,2)
:在#39;后面提取2个字符。&#39;对于每个领域printf NF!=i?",":"\n"
:print&#39; \ n&#39;如果它是最后一个字段,请打印&#39;,&#39;否则。