我如何在新列中打印 KSH 中 1 列的总数?
How can i print in a new column the total count for 1 column in KSH?
我正在尝试在不删除其他列的情况下在 txt 文件中添加一个包含总计数的新列,已经在 Whosebug 中找到 post 但是
cut -f1 test.txt | uniq -c | join -2 2 test.txt -
对我不起作用,post 中的其他选项也不适用,我的意思是 post 没有回答我的问题,有人可以帮忙吗?
test.txt:
Apple_1 1 300
Apple_2 1 500
Apple_2 500 1500
Apple_2 1500 2450
Apple_3 1 1250
Apple_3 1250 2000
预期输出:
Apple_1 1 300 1
Apple_2 1 500 3
Apple_2 500 1500 3
Apple_2 1500 2450 3
Apple_3 1 1250 2
Apple_3 1250 2000 2
已经尝试过一些正则表达式和 awk,例如:
awk '{count[]++} END {for (word in count) print word, count[word]}' file
awk '{ print [=13=] "\t" ++count[] }'
您需要遍历文件两次,一次计算计数,第二次打印所有行并附加计数。
awk 'FNR == NR {count[]++; next}
{print [=10=] "\t" count[]}' file file
FNR == NR
读取第一个文件时为真
我正在尝试在不删除其他列的情况下在 txt 文件中添加一个包含总计数的新列,已经在 Whosebug 中找到 post 但是
cut -f1 test.txt | uniq -c | join -2 2 test.txt -
对我不起作用,post 中的其他选项也不适用,我的意思是 post 没有回答我的问题,有人可以帮忙吗?
test.txt:
Apple_1 1 300
Apple_2 1 500
Apple_2 500 1500
Apple_2 1500 2450
Apple_3 1 1250
Apple_3 1250 2000
预期输出:
Apple_1 1 300 1
Apple_2 1 500 3
Apple_2 500 1500 3
Apple_2 1500 2450 3
Apple_3 1 1250 2
Apple_3 1250 2000 2
已经尝试过一些正则表达式和 awk,例如:
awk '{count[]++} END {for (word in count) print word, count[word]}' file
awk '{ print [=13=] "\t" ++count[] }'
您需要遍历文件两次,一次计算计数,第二次打印所有行并附加计数。
awk 'FNR == NR {count[]++; next}
{print [=10=] "\t" count[]}' file file
FNR == NR
读取第一个文件时为真