为每个 n 列值创建新行,同时保持第 1 列值
Creating new line for each n-column value, while maintaining Col. 1 value
我有以下由制表符(n 列)分隔的数据类型:
-2 abandonar abandono abandonas abandona abandonamos abandonáis abandonan
-4 abandonado abandonada abandonados abandonadas
-2 abandona abandonos
-3 secuestrado secuestrada secuestrados secuestradas secuestraría secuestrarías secuestraríamos secuestraríais secuestrarían
我需要保留第 1 列中的值,但我需要将以下列中的每个字符串移动到它们自己的行中。期望的结果是这样的:
-2 abandonar
-2 abandono
-2 abandonas
-2 abandona
-2 abandonamos
-2 abandonáis
-2 abandonan
-4 abandonado
-4 abandonada
-4 abandonados
-4 abandonadas
-2 abandona
-2 abandonos
-3 secuestrado
-3 secuestrada
-3 secuestrados
-3 secuestradas
-3 secuestraría
-3 secuestrarías
-3 secuestraríamos
-3 secuestraríais
-3 secuestrarían
awk
中是否有允许此类操作的函数?
简单地写出我需要在每一行上打印的内容 à la:
$awk '{print , , etc}'
会很麻烦,尤其是因为有
代码:
n 列
到目前为止,我已经尝试了一些 awk
解决方案来帮助解决有关转置数据的问题。我找到了这个解决方案 here:
awk '{ for (i=1;i<=NF;i++ ) printf $i " " }'
和
awk '{
for (f = 1; f <= NF; f++) { a[NR, f] = $f }
}
NF > nf { nf = NF }
END {
for (f = 1; f <= nf; f++) {
for (r = 1; r <= NR; r++) {
printf a[r, f] (r==NR ? RS : FS)
}
}
}' input
但是,正如您可能看到的那样,它们并没有完全解决问题,因为我希望每一列也附加到第 1 列中其行的原始值,而这些解决方案只是转置数据。
关于如何实现我想要的结果有什么想法吗?
如果我没理解错的话,那么
awk '{ for(i = 2; i <= NF; ++i) print , $i }' filename
应该可以。
未测试,但这应该有效
awk '{for(i=2;i<=NF;i++)print ,$i}' file
我有以下由制表符(n 列)分隔的数据类型:
-2 abandonar abandono abandonas abandona abandonamos abandonáis abandonan
-4 abandonado abandonada abandonados abandonadas
-2 abandona abandonos
-3 secuestrado secuestrada secuestrados secuestradas secuestraría secuestrarías secuestraríamos secuestraríais secuestrarían
我需要保留第 1 列中的值,但我需要将以下列中的每个字符串移动到它们自己的行中。期望的结果是这样的:
-2 abandonar
-2 abandono
-2 abandonas
-2 abandona
-2 abandonamos
-2 abandonáis
-2 abandonan
-4 abandonado
-4 abandonada
-4 abandonados
-4 abandonadas
-2 abandona
-2 abandonos
-3 secuestrado
-3 secuestrada
-3 secuestrados
-3 secuestradas
-3 secuestraría
-3 secuestrarías
-3 secuestraríamos
-3 secuestraríais
-3 secuestrarían
awk
中是否有允许此类操作的函数?
简单地写出我需要在每一行上打印的内容 à la:
$awk '{print , , etc}'
会很麻烦,尤其是因为有 代码: n 列
到目前为止,我已经尝试了一些 awk
解决方案来帮助解决有关转置数据的问题。我找到了这个解决方案 here:
awk '{ for (i=1;i<=NF;i++ ) printf $i " " }'
和
awk '{
for (f = 1; f <= NF; f++) { a[NR, f] = $f }
}
NF > nf { nf = NF }
END {
for (f = 1; f <= nf; f++) {
for (r = 1; r <= NR; r++) {
printf a[r, f] (r==NR ? RS : FS)
}
}
}' input
但是,正如您可能看到的那样,它们并没有完全解决问题,因为我希望每一列也附加到第 1 列中其行的原始值,而这些解决方案只是转置数据。 关于如何实现我想要的结果有什么想法吗?
如果我没理解错的话,那么
awk '{ for(i = 2; i <= NF; ++i) print , $i }' filename
应该可以。
未测试,但这应该有效
awk '{for(i=2;i<=NF;i++)print ,$i}' file