bash循环-根据文件中的字符串输出

问题描述 投票:0回答:1

如何调用输出文件作为输出第4列中的字符串(或根据输入的第i行的第4列)?

我尝试过:

for i in {1..321}; do
awk '(FNR==i) {outfile = $4 print $0 >> outfile}' RV1_phase;
done

for i in {1..321}; do
awk '(FNR==i) {outfile = $4; print $0}' RV1_phase > "$outfile";
done

输入文件:

1 2 2 a
4 5 6 f
4 4 5 f
....
....

所需输入i = 1名称:a

1 2 2 a

目标:我有在gnuplot中绘制的数据,我想绘制一组以字符串命名的图形,以了解哪个点来自哪个文件。该点将被着色。我需要获取用于在gnuplot中进行绘图的文件,因此我想使用我的问题中的循环来创建它们。

bash awk
1个回答
2
投票

简单

for i in {1..321}; do
awk '(FNR==i) {print $0 >> $4}' RV1_phase;
done

第一次尝试的问题是,您没有使用;将分配给outfile的分配与print命令分开。不过,不需要单独的变量。]​​>

您也不需要bash循环:

awk '1 <= FNR && FNR <= 321 {print $0 >> $4}' RV1_phase;
    
© www.soinside.com 2019 - 2024. All rights reserved.