输入:
echo "1021,fra,1022,eng,1023,qad" | sed or awk ...
预期产出:
1021-fra,1022-eng,1023-gad
答案 0 :(得分:3)
echo "1021,fra,1022,eng,1023,qad" |sed 's/\([^,][^,]*\),\([^,][^,]*\)/\1-\2/g'
1021-fra,1022-eng,1023-qad
答案 1 :(得分:2)
由GNU sed
echo "1021,fra,1022,eng,1023,qad" |sed -r 's/([^,]+),([^,]+)/\1-\2/g'
答案 2 :(得分:1)
这是一种方法,有点作弊:
echo "1021,fra,1022,eng,1023,qad" | sed -e 's/,\([a-z]\)/-\1/g'
也就是说,将每个逗号替换为带有连字符后跟该字母的字母。
如果它有帮助,这里的另一个版本作弊有点不同:
echo "1021,fra,1022,eng,1023,qad" | sed -e 's/\([0-9]\),/\1-/g'
即,将每个数字替换为后跟带有该数字和连字符的逗号。
答案 3 :(得分:1)
以下是awk
版本:
echo "1021,fra,1022,eng,1023,qad" | awk -F, '{for (i=1;i<NF;i++) printf "%s%s",$i,(i%2?"-":",");print $NF}'
1021-fra,1022-eng,1023-qad