【发布时间】:2018-08-17 23:32:34
【问题描述】:
我试图弄清楚如何使用纯 awk 打印满足 bash 中 while 计数 循环提供的计数的行。这是输入的一些行。
NODE_1_posplwpl
NODE_1_owkokwo
NODE_1_kslkow
NODE_2_fbjfh
NODE_2_lsmlsm
NODE_3_Loskos
NODE_3_pospls
我想要做的是将在第二个字段中与 while count 循环提供的计数匹配的行打印到名为 file_$count_test 的文件中。 因此,名为“file_1_test”的文件将包含带有“NODE_1..”的行,“file_2_test”将包含带有“NODE_2..”的行;就像文件的所有行一样。 这是我的代码。
#! /bin/bash
while read CNAME
do
let count=$count+1
grep "^${CNAME}_" > file_${count}_test
awk -v X=$count '{ FS="_" } { if ($2 == X) print $0 }' > file_${count}_test
done <$1
exit 1
此代码仅创建文件_1_test,它是空的。所以 awk 条件似乎不好用。
【问题讨论】:
-
请在您的帖子中的代码标签中发布示例输入,不建议提供示例输入和输出的链接。
-
只提供了输入的一些行。
-
这里不需要使用
while循环,如果您能告诉我们您要做什么,那么我们可以在单个awk本身中完成。请立即在您的帖子中添加该逻辑。
标签: linux bash awk while-loop