如何从 shell 脚本中的 .dat 文件的列中读取值?

如何从 shell 脚本中的 .dat 文件的列中读取值?

所以我有一个文件,其中包含不同列中六个不同事物的数据:

1   0.020   0.700   5.4 1500    4000
2   0.020   0.700   5.4 1500    4050
3   0.020   0.700   5.4 1500    4100
4   0.020   0.700   5.4 1500    4150
5   0.020   0.700   5.4 1500    4200

我想将六列中的值读取到我当前在下面设置的第二个文件中。我打算使用这些作为输入来读入第三个文件“inlist_changer.sh”文件。我很抱歉,但我对 shell 脚本编写不是很有经验,所以也许除此之外,您可能知道一种更有效的方法,让我甚至不重复交换bashEOT命令。


bash inlist_changer.sh<<EOT
placeholder_value1
EOT
bash inlist_changer.sh<<EOT
placeholder_value2
EOT
bash inlist_changer.sh<<EOT
placeholder_value3
EOT
bash inlist_changer.sh<<EOT
placeholder_value4
EOT
bash inlist_changer.sh<<EOT
placeholder_value5
EOT
bash inlist_changer.sh<<EOT
placeholder_value6
EOT
./mk
./rn
bash inlist_changer.sh<<EOT
placeholder_value1
EOT
bash inlist_changer.sh<<EOT
placeholder_value2
EOT
bash inlist_changer.sh<<EOT
placeholder_value3
EOT
bash inlist_changer.sh<<EOT
placeholder_value4
EOT
bash inlist_changer.sh<<EOT
placeholder_value5
EOT
bash inlist_changer.sh<<EOT
placeholder_value6
EOT
./rn
bash inlist_changer.sh<<EOT
placeholder_value1
EOT
bash inlist_changer.sh<<EOT
placeholder_value2
EOT
bash inlist_changer.sh<<EOT
placeholder_value3
EOT
bash inlist_changer.sh<<EOT
placeholder_value4
EOT
bash inlist_changer.sh<<EOT
placeholder_value5
EOT
bash inlist_changer.sh<<EOT
placeholder_value6
EOT
./rn

答案1

您可以使用 shell 的read命令来执行操作,而无需修改中间文件:

#!/bin/bash
while read v1 v2 v3 v4 v5 v6 ; do
  echo "v1:$v1 v2:$v2 v3$v3 v4:$v4 v5:$v5 v6:$v6"
  done < /path/to/data-file.dat

read通过从 shell 实例中运行来查看该命令的文档help read,当然,您始终可以通过为默认 shell 运行 or 或 来man builtins获取更多文档。man bashman sh

相关内容