Рейтинг:0

Как создать файл со следующей структурой?

флаг fj

Рассмотрим следующие строки:

E i -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0
У ГЭВ ММ
В -1 0 0 0 0 0 0 1 0
P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,3330000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0 0

где я находится в диапазоне от 0 до 100000.

Я хотел бы сделать файл, состоящий из таких строк, т.е.

E 1 -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0
У ГЭВ ММ
В -1 0 0 0 0 0 0 1 0
P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,3330000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0 0
E 1 -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0
У ГЭВ ММ
В -1 0 0 0 0 0 0 1 0
P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,3330000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0 0
E 2 -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0
    У ГЭВ ММ
    В -1 0 0 0 0 0 0 1 0
    P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,3330000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0 0
...

Не могли бы вы рассказать мне, как я могу это сделать?

Мой подход начинается с создания файла сценария, в котором я печатаю,

сенсорный файл.txt
для я в {0.. 100000}; 
do echo 'E i -1 -1.0000000000000000e+00 -1.00000000000000000e+00 -1.0000000000000000e+00 0 0 1 0 0 0 0' >> file.txt;
echo 'U GEV MM' >> файл.txt
эхо '-1 0 0 0 0 0 0 1 0' >> файл.txt
echo 'P 1 535 0.0000000000000000e+00 0.00000000000000000e+00 1.33300000000000000e+00 1.036606429653994e+01 1.02800000000000000x0 0 0 0 файл
сделано

Но явно что-то не так, так как i остается таким, как i в сгенерированном файле, а количество строк намного меньше, чем ожидалось (4 * 100000).

Рейтинг:3
флаг cn

Вы хотите, чтобы количество вхождений внутри цикла было минимальным (открытие и закрытие file.txt 100K x4 действительно нагружает вашу систему без какой-либо веской причины).

#!/бин/баш

объявить -а а
я=0
в то время как ((i++ < 100000)); делать
    a+=("E $i -1 -1.0000000000000000e+00 -1.00000000000000000e+00 -1.00000000000000000e+00 0 0 1 0 0 0 0" 'U GEV MM' '-1 0 0 0 0 0 0 1 0' ' P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,33300000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0' 01 0 0' 0'
сделано
printf '%s\n%s\n%s\n' "${a[@]}" > файл.txt
флаг fj
Спасибо! Тем не менее, я остаюсь внутри строки.
bac0n avatar
флаг cn
Я не понимаю?
флаг fj
мой вывод E i -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0 У ГЭВ ММ -1 0 0 0 0 0 0 1 0 P 1 535 0,0000000000000000e+00 0,00000000000000000e+00 1,3330000000000000e+00 1,036606429653994e+01 1,028000000000000000e+01 0 0 0 E i -1 -1,0000000000000000e+00 -1,00000000000000000e+00 -1,0000000000000000e+00 0 0 1 0 0 0 0
флаг fj
То есть i не заменяется целым числом.
bac0n avatar
флаг cn
не видел `"'E $i -1 -1.0000000000000000e+00..."` это единственный `i`
bac0n avatar
флаг cn
это будет идти от 0 до 999999, вы также можете сделать `i=1` и использовать `

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.