【发布时间】:2021-10-04 08:41:27
【问题描述】:
以下代码仅打印行 a 和 b 忽略 c
awk '{a[$0]} END {for(i in a) for(j in a) for(k in a) print i, j, k}' < <(echo -e 'a\nb\c\n')
output:
a a a
a a b
a b a
a b b
b a a
b a b
b b a
b b b
在上面的代码中需要改变什么,以便 c 行进入输出排列?
【问题讨论】:
-
不可重现:ideone.com/o0cCWU
-
@blhsing:这是可重现的,您没有运行 OP 使用的确切命令。只需使用
awk '1' < <(echo -e 'a\nb\c\n'),您就会看到相同的行为。 -
@anubhava 我现在看到是
\c的拼写错误导致了这种行为。将维持我的投票结束这个问题,因为“不可重现”和“错字”被归为同一个关闭选项。 -
是的,这是您的电话,但 jfyi 修复错字也不会产生预期的结果。只需使用
< <(echo -e 'a\nb\nc\n')运行 OP 的命令 -
检查输入应该始终是调试不良输出的第一步。
echo -e 'a\nb\c\n'是否产生您期望的输出?无论如何,而不是硬编码循环,请参阅stackoverflow.com/a/56916316/1745001 了解如何打印输入字符串的所有排列(和组合)。
标签: awk associative-array