如何从ascii文件遍历每一行

时间:2009-02-05 11:41:36

标签: parsing shell

在shell脚本中,如何遍历ASCII文件中的每一行并对其值执行操作

这是我有

的ASCII文件的示例
23      3.4e-09     55.90       5.7e-07
24        12.5      79.90       7.9e-09
25        67.9      78.9       3.4e-09
26        98.8      89.67       9.7e-09

如何使用第一行和迭代......

WAT DO U MEAN BY LINE

4 个答案:

答案 0 :(得分:3)

在Linux上使用bash,您可以使用read。它可能取决于您要使用的shell和版本。

“<”是重定向操作,它告诉shell从文件test.txt重定向stdin

有关详细信息,请参阅bash联机帮助页中SHELL BUILTIN COMMANDS下的read命令。

#!/bin/sh

while read line
do
  echo "[" $line "]"
done < test.txt

答案 1 :(得分:1)

一种方式(至少在bash和ksh中,也可以在普通的sh中工作)是通过使用类似的东西:

while read line
do
  ...
done

但是,这会修改每一行的空格。如果行上有“足够固定”的格式(比如每行是ValA ValB ValC),您可以修改读取行以读取vala valb valc

答案 2 :(得分:1)

在Windows中,

解析文本字符串: 一串文本将被视为来自文件的单行输入,该字符串必须用双引号(或带有usebackq的单引号)括起来。

仅回显以下字符串中的日期

FOR /F "tokens=4 delims=," %%G IN ("deposit,$45.50,23.7,12-AUG-07") DO @echo Date paid %%G

从这里开始:for /f loop through text

答案 3 :(得分:0)

我怀疑即使你正确设置了循环并且间距总是相同的,你也会对这些值进行数学运算时遇到麻烦,因为那里有一些科学数字,比如3.4e-09。我怀疑脚本是设置为将其转换为实际值,它必须是双精度而不是整数。

不知道你的编程技巧是什么样的,但我个人会在一个程序中做到这一点。