2009-02-05 17 views
-1

在外壳脚本,我如何遍历在ASCII文件中的每一行,在其值执行一个操作如何通过从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做ü意思LINE

+0

什么操作系统?在Unices和Windows上,Shell脚本是非常不同的...... – 2009-02-05 11:47:19

+0

您使用的是什么外壳? – Spence 2009-02-05 11:47:21

回答

1

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

 
while read line 
do 
    ... 
done 

然而,这将修改每行空白。如果你对线“充分固定”格式(比如每行瓦拉值Valb ValC),你可以修改读取行读VALA值Valb valc

3

在Linux上使用bash,您可以使用阅读。它可能取决于您要使用的外壳和版本。

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

参见下SHELL内建命令读取命令,在bash的手册页获取更多信息文件重定向标准输入。

#!/bin/sh 

while read line 
do 
    echo "[" $line "]" 
done < test.txt 
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

0

我怀疑即使你得到正确的循环设置和间距始终是你将有麻烦做同样的这些数值的数学,因为有像3.4e-09那样的科学数字。我怀疑脚本被设置成将其转化为真正的价值,它必须是像double而不是整数。

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