我有一个这样的输入文件(input.txt):
Main1 one,two,three,four
Main2 five,six,seven,eight
Run Code Online (Sandbox Code Playgroud)
我想在输出文件 (output.txt) 中输出这样的输出:
Main1 one
Main1 two
Main1 three
Main1 four
Main2 five
Main2 six
Main2 seven
Main3 eight
Run Code Online (Sandbox Code Playgroud)
小智 9
awk '{ split($2,a,","); for (i in a) print $1, a[i]; }' input.txt
Run Code Online (Sandbox Code Playgroud)
例子:
~) $ echo -e "Main1 one,two,th\nMain2 five,six,seven,eight " | awk '{ split($2,a,","); for (i in a) print $1, a[i]; }'
Main1 one
Main1 two
Main1 th
Main2 five
Main2 six
Main2 seven
Main2 eight
Run Code Online (Sandbox Code Playgroud)
这里有一些选择:
贝壳
while read main rest; do
for i in ${rest//,/$'\n'}; do
echo $main $i
done
done < file
Run Code Online (Sandbox Code Playgroud)珀尔
perl -lane 'print "$F[0] $_" for split(/,/,$F[1])' file
Run Code Online (Sandbox Code Playgroud)awk
awk -F'[, ]' '{for(i=2;i<=NF;i++){print $1,$i}}' file
Run Code Online (Sandbox Code Playgroud)