[Linux] awk 切分字符
Date: 2020.06.20
Author: Xin Pan
问题
假设有下边的文件wav.scp
:
G0002_DTM1_050_ahead_000_G0002_S1001_MDM16 /home/panxin/kaldi/egs/ami/s5/wav_db/wav/beamformed/G0002_DTM1_050_ahead_000_G0002_S1001_MDM16.wav
我希望得到如下结果:
G0002_DTM1_050_ahead_000_G0002_S1001_MDM16 G0002
解决
使用如下命令
cat wav.scp |awk '{print $1}' |awk 'BEGIN{FS="[_]+"}{print $0" "$1}' >utt2spk
首先
`cat wav.scp |awk '{print $1}' #会得到这个部分G0002_DTM1_050_ahead_000_G0002_S1001_MDM16
在上边的基础之上使用
awk 'BEGIN{FS="[_]+"}{print #$0" "$1}
会把G0002_DTM1_050_ahead_000_G0002_S1001_MDM16中
以“_"符号进行切分。$0
表示输入内容,$1
表示切分后的第一个内容。
这样我们就得到了G0002_DTM1_050_ahead_000_G0002_S1001_MDM16 G0002