как перебрать каждую строку из файла ASCII - PullRequest
0 голосов
/ 05 февраля 2009

В сценарии оболочки, как выполнить итерацию по каждой строке в файле 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

как будет проходить первая строка и итерация ...

БУДЕТ ЛИ ВЫ ЗНАЧИТЬ ПО ЛИНИИ

Ответы [ 4 ]

3 голосов
/ 05 февраля 2009

Используя bash в Linux, вы можете использовать read. Это может зависеть от оболочки и версии, которую вы хотите использовать.

«<» - это операция перенаправления, которая указывает оболочке перенаправить стандартный ввод из файла test.txt </p>

См. Команду чтения в разделе Команды SHELL BUILTIN на странице руководства bash для получения дополнительной информации.

#!/bin/sh

while read line
do
  echo "[" $line "]"
done < test.txt
1 голос
/ 05 февраля 2009

В Windows

Разбор текстовой строки: Строка текста будет обрабатываться так же, как одна строка ввода из файла, строка должна быть заключена в двойные кавычки (или одинарные кавычки с usebackq).

Эхо только дата из следующей строки

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

Отсюда: для / f цикл текста

1 голос
/ 05 февраля 2009

Один из способов (по крайней мере, в bash и ksh также может работать в обычном sh) - использовать что-то вроде:

while read line
do
  ...
done

Однако это изменит пробелы в каждой строке. Если у вас есть «достаточно фиксированный» формат в строках (скажем, каждая строка - ValA ValB ValC), вы можете изменить строку чтения для чтения vala valb valc

0 голосов
/ 05 февраля 2009

Я подозреваю, что даже если вы правильно настроили цикл и интервал всегда одинаков, у вас возникнут проблемы с выполнением математических операций с этими значениями, поскольку там есть некоторые научные цифры, такие как 3.4e-09. Я сомневаюсь, что скриптинг настроен так, чтобы превратить это в реальное значение, и это должно быть что-то вроде двойного, а не целого числа.

Не знаю, каковы ваши навыки программирования, но я лично сделал бы это в программе.

...