是否有更好的解决方案来反转 uniq 计数
Is there any better solution to reverse uniq count
我想反转 uniq -c
的输出:
1 hi
2 test
3 try
至:
hi
test
test
try
try
try
我现在的解决方案是使用循环:
while read a b; do yes $b |head -n $a ;done <test.txt
不知道有没有更简单的命令可以实现?
这是另一个解决方案
echo "\
1 hi
2 test
3 try" | awk '{for(i=1;i<=;i++){print()}}'
输出
hi
test
test
try
try
try
这将以相同的方式工作,
awk '{for(i=1;i<=;i++){print()}}' uniq_counts.txt
脚本的核心,if course
{ for (i=1;i<=;i++) { print }
其中 awk
已将输入解析为 2 个字段,</code> 是数字 (1,2,3),$2 是值,(hi,test,try)。</p>
<p>条件 <code>i<=
测试计数器 i
没有增加超过字段 $1 中提供的计数,并且 print
每次 i<=
时打印该值条件为真。
IHTH
您不需要 awk
或任何其他命令,您完全可以在 bash
中完成
while read n s
do
for ((i=0; i<n; i++))
do
echo $s;
done
done < test.txt
这里我的解决方案使用 bash brace expansion 和 printf
内部命令。
while read a b
do
eval printf "'%.${#b}s\n'" "'$b'"{1..$a}
done <test.txt
下面简单的例子
printf '%s\n' test{1..2}
打印两行,其中包含字符串 test 后跟一个数字:
test1
test2
但我们可以使用 printf
命令的 precision field 指定要打印的确切字符数:
printf '%.4s\n' test{1..2}
显示:
test
test
要打印的字符的长度由要打印的文本的长度给定 (${#b}
)。
最后,eval
命令必须在 other 中使用,以便在大括号扩展中使用变量。
另一个awk
awk '{while (--) print }' file
我想反转 uniq -c
的输出:
1 hi 2 test 3 try
至:
hi
test
test
try
try
try
我现在的解决方案是使用循环:
while read a b; do yes $b |head -n $a ;done <test.txt
不知道有没有更简单的命令可以实现?
这是另一个解决方案
echo "\
1 hi
2 test
3 try" | awk '{for(i=1;i<=;i++){print()}}'
输出
hi
test
test
try
try
try
这将以相同的方式工作,
awk '{for(i=1;i<=;i++){print()}}' uniq_counts.txt
脚本的核心,if course
{ for (i=1;i<=;i++) { print }
其中 awk
已将输入解析为 2 个字段,</code> 是数字 (1,2,3),$2 是值,(hi,test,try)。</p>
<p>条件 <code>i<=
测试计数器 i
没有增加超过字段 $1 中提供的计数,并且 print
每次 i<=
时打印该值条件为真。
IHTH
您不需要 awk
或任何其他命令,您完全可以在 bash
while read n s
do
for ((i=0; i<n; i++))
do
echo $s;
done
done < test.txt
这里我的解决方案使用 bash brace expansion 和 printf
内部命令。
while read a b
do
eval printf "'%.${#b}s\n'" "'$b'"{1..$a}
done <test.txt
下面简单的例子
printf '%s\n' test{1..2}
打印两行,其中包含字符串 test 后跟一个数字:
test1
test2
但我们可以使用 printf
命令的 precision field 指定要打印的确切字符数:
printf '%.4s\n' test{1..2}
显示:
test
test
要打印的字符的长度由要打印的文本的长度给定 (${#b}
)。
最后,eval
命令必须在 other 中使用,以便在大括号扩展中使用变量。
另一个awk
awk '{while (--) print }' file