GeekBrains
300*600
↑↑

↓↓
Флаг России Флаг Англии
🏠 | 💻 PC | IT-Helpdesk |

Текстовые препроцессоры

В этой статье Вы можете узнать в основном о работе с AWK.

Про SED есть отдельная статья SED

По умолчанию я предполагаю, что Вы работаете в Bash под Windows 10 . Как установить Bash в Windows 10 подробно описано здесь.

Основные команды Sed

Для того чтобы применить SED достаточно ввести в командную строку

echo ice | sed s/ice/fire/

Результат:

fire

Замена слова в файле

Обычно SED применяют к файлам, например к логам или конфигам.

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String Here is an Integer Here is a Float

Мы хотим заменить слово Here на There

sed 's/Here/There/' input.txt

Результат будет выведен в консоль:

There is a String

There is an Integer

There is a Float

Если нужно не вывести в консоль а изменить содержание файла - используем опцию -i

sed -i 's/Here/There/' input.txt

В этом случае перепишется исходный файл input.txt

Рассмотрим пример посложнее. Файл input.txt теперь выглядит так:

Here is an Apple. Here is a Pen. Here is an ApplePen Integer is Here Here is a Float Here is a Pen. Here is a Pineapple. Here is a PineapplePen

sed 's/Here/There/' input.txt

Как Вы сейчас увидите, замена произойдёт только по одному разу в строке

There is an Apple. Here is a Pen. Here is an ApplePen

Integer is There

There is a Float

There is a Pen. Here is a Pineapple. Here is a PineapplePen

Чтобы заменить все слова нужна опция g

sed 's/Here/There/g' input.txt

There is an Apple. There is a Pen. There is an ApplePen
Integer is There

There is a Float

There is a Pen. There is a Pineapple. There is a PineapplePen

ApplePen

Замена слова в файле и вывод результата в другой файл

Та же замена, но с выводом в новый текстовый файл, который мы назовём output:

sed 's/Here/There/' input.txt > output.txt

Замена слова в нескольких файлах одновременно

Если нужно обработать сразу несколько файлов: например файл 1.txt с содержанием

First File: Here

И файл 2.txt с содержанием

Second File: Here

Это можно сделать используя *.txt

sed 's/Here/There/' *.txt > output.txt

На выходе файл output.txt будет выглядеть так

First File: There Second File: There

Отбросить всё, что левее определённого слова

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String it has a Name Here is an Integer it has a Name Here is a Float it has a Name

Мы хотим отбросить всё, что находится левее слова it, включая слово it, и записать в файл.

sed 's/^.*it//' input.txt > output.txt

^ означает, что мы стартуем с начала строки Результат:

 has a Name

 has a Name

 has a Name

Для доступности объясню синтаксис сравнив две команды. Посмотрите внимательно, когда мы заменяем слово Here на There.

There находится между двумя слэшами. Раскрашу их для наглядности в зелёный и красный.

sed 's/Here/There/'

А когда мы хотим удалить что-то, мы сначала описываем, что мы хотим удалить. Например, всё от начала строки до слова it.

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

sed 's/^.*it//' > output.txt

Отбросить всё, что правее определённого слова

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String / it has a Name Here is an Integer / it has a Name Here is a Float / it has a Name

Мы хотим отбросить всё, что находится правее слова is, включая слово is, и записать в файл.

sed 's/is.*//' > output.txt

Результат:

Here Here Here

Экранирование символов в sed

Специальные символы экранируются с помощью \

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String / it has a Name Here is an Integer / it has a Name Here is a Float it / has a Name

Мы хотим отбросить всё, что находится левее /a, включая /a, и записать в файл.

sed 's/^.*/a//' > output.txt

В результате получим ошибку

-e expression #1, char 15: unknown option to `s'

Чтобы команда заработала нужно добавить \ перед /

sed 's/^.*\/a//' > output.txt

Результат:

Here is a String Here is an Integer Here is a Float

Два условия одновременно в Sed

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String /b it has a Name Here is an Integer /b it has a Name Here is a Float /b it has a Name

Мы хотим отбросить всё, что находится левее /b, включая /b, и всё, что правее has.

Таким образом, в каждой строчке должно остаться только слово it.

Нужно учесть необходимость экранирования специального символа / а также мы хотим направить вывод в файл.

sed 's/^.*\/b// ; s/has.*//' input.txt > output.txt

Результат:

it it it

Удаление переходов на новую строку

sed ':a;N;$!ba;s/\n//g' file ;

Удалить всё после определённой строки

Допустим Вы хотите удалить все строки после третьей

sed 3q input.txt > output.txt

Удалить строку

Допустим Вы хотите удалить все строки где встречается слово Apple в файле input.txt

Here is an Apple Here Pen Here ApplePen Integer is Here Here is a Float Here Pen Here Pineapple Here PineapplePen Umm Apple Apple Apple Pen

Сделать это можно с помощью опции d

sed '/Apple/d' input.txt > output.txt

Результат:

Integer is Here Here is a Float Here Pen Here Pineapple Here PineapplePen

Теперь сделаем более сложное условие - удалим все строки где есть слово Pineapple и слово Integer

sed '/Pineapple\|Integer/d' input.txt > output.txt

| выступает в роли логического ИЛИ

\ нужна чтобы экранировать |

Результат:

Here is an Apple. Here is a Pen. Here is an ApplePen Here is a Float Umm Apple Apple Apple Pen

Получить диапазон строк

В случае, когда Вы работаете с большими файлами, например с логами, часто бывает нужно получить только определённые строки, например, в момент появления бага.

Копировать из UI командной строки не всегда удобно, но если Вы примерно представляете диапазон нужных строк - можно скопировать только их и записать в отдельный файл.

Например, Вам нужны строки с 9570 по 9721

sed -n '9570,9721p;9722q' project-2019-10-03.log > bugFound.txt

Удалить пустые строки

Если строка действительно пустая, то подойдёт команда

sed '/^$/d'

Обычно жизнь более жестока, и в строках содержатся пробелы.

Удалить такие строки тоже можно

$ sed '/^[[:space:]]*$/d' input.txt > output.txt

Заменить пустые строки

Заменить все пустые строки на двойные тэги переноса строки

$ sed 's/^[[:space:]]*$/\<br\>\<br\>/' lin.txt > output.txt

Заменить всё между определёнными символами

Удалить всё что находится между квадратными скобками включая скобки

sed 's/\[.*\]//' input.txt > output.txt

Основные команды AWK

Вывести только определённые столбцы

Предположим, что у нас есть файл input.txt следующего содержания

Here is a String it has a Name
Here is an Integer it has a Name
Here is a Float it has a Name

Мы хотим отбросить всё, что находится левее слова it, включая слово it, и записать в файл.

Аналогичную операцию мы проделывали с помощью sed в этом примере.

awk '{print $6,$7,$8}' > awk_result.txt

$6 означает, что мы выводим элемент из шестого столбца. Результат:

 has a Name
 has a Name
 has a Name

С помощью awk мы можем вывести произвольные столбцы:

awk '{print $1,$3,$7,$8}' > awk_result.txt

Результат:

Here a a Name
Here an a Name
Here a a Name

Нотик

Литература

Обработка результатов

Пока что эта статья плохо организована.

Задача стояла следующая: мне во время практики в АЭПе дали программу, которая на выходе выдает информацию о выходе радионуклидов в текстовых файлах.

Чтобы значительно сократить время, затрачиваемое на обработку нужно написать программу, которая из текстовых файлов достает только определённые столбцы или строки.
Т.к. я языками программирования пока владею крайне слабо спросил совет у Синего.
Он предложил использовать различные текстовые препроцессоры. Первое что он упоминул - sed.
В процессе оказалось, что нужны еще awk и grep .


На выходе довольно большой текстовый файл, выложу его кусок

000:00:00 entry into chain 13 cpu time = 0.000 secs

SPU
PRIN 1 0 1
PARTIT 1 2 4 5 46 69
REAC 234 1000 2235 1000 236 1000 8238 1000
6239 1000 1240 1000 1241 1000 1242 1000
951 1000 952 1000 953 1000
BEGI
000:00:00 entry into chain 14 cpu time = 0.000 secs

000:00:00 entry into chain 15 cpu time = 0.000 secs

000:00:00 entry into chain 12 cpu time = 0.000 secs

MACROSCOPIC FISSION X-SECS for materials and cell, last column is cell flux
1 2 3 4 5 6 7 8
9 10 11
gp 1 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01
0.258187E-01 0.258187E-01 0.258187E-01 0.748169E-02 0.473275E-02
gp 2 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01
0.161587E-01 0.161587E-01 0.161587E-01 0.464412E-02 0.201256E-01
gp 3 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01
0.159553E-01 0.159553E-01 0.159553E-01 0.458471E-02 0.257730E-01
gp 4 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01
0.128689E-01 0.128689E-01 0.128689E-01 0.369038E-02 0.246072E-01
gp 5 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02
0.228793E-02 0.228793E-02 0.228793E-02 0.653324E-03 0.142246E-01
gp 6 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02


И так до gp 69, и дальше еще много различных результатов.
Обращаю внимание на строки, которые начинаются с gp. Под каждой из них есть строка-продолжение.
которая не содержит записи gp. Меня интересуют последние числа каждой такой строки - это поток n.

Первое что я делаю - выделяю куски текста, которые содежат нужную мне информацию.

grep -A 140 "MACROSCOPIC FISSION X-SECS for materials and cell, last column is cell flux" REZWI > result.txt
grep -A 140 выделяет 140 строк после контекста "MACROScOPIc…."
Почему 140 - 69 групп по две строчки на группу = 138, плюс заголовок и еще одна не помню для чего ((((
Результатом манипуляции будет текстовый файл result.txt, в котором будет 35 блоков данных
35 - потому что цикл работы реактора разбит на 35 частей каждая из которых в исходном файле
имеет заголовок "MACROScOPIc…." который собственно и ищется с помощью grep.
Вот часть файла result.txt

MACROSCOPIC FISSION X-SECS for materials and cell, last column is cell flux 1 2 3 4 5 6 7 8 9 10 11 gp 1 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.748169E-02 0.473275E-02 gp 2 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.161587E-01 0.464412E-02 0.201256E-01 gp 3 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.159553E-01 0.458471E-02 0.257730E-01 gp 4 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.128689E-01 0.369038E-02 0.246072E-01 gp 5 0.228793E-02 0.2
28793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.228793E-02 0.653324E-03 0.142246E-01 gp 6 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.147051E-02 0.418961E-03 0.823997E-02 gp 7 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.152774E-02 0.434211E-03 0.721812E-02 gp 8 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.164271E-02 0.484217E-03 0.291866E-02 gp 9 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.182526E-02 0.532056E-03 0.999085E-03 gp 10 0.203580E-02 0.203580E-02 0.203580E-02 0.203580E-02 0.203580E-02 0.203580E-02
0.203580E-02 0.203580E-02 0.203580E-02 0.203580E-02 0.203580E-02 0.569540E-03 0.396603E-02 gp 11 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.229674E-02 0.726113E-03 0.702966E-03 gp 12 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.258920E-02 0.728032E-03 0.323297E-02 gp 13 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.299092E-02 0.824071E-03 0.762816E-02 gp 14 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.360061E-02 0.104274E-02 0.526137E-02 gp 15 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.416529E-02 0.41652
9E-02 0.125347E-02 0.765153E-03 gp 16 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.546336E-02 0.144770E-02 0.441727E-02 gp 17 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.657615E-02 0.184687E-02 0.116604E-01 gp 18 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.758966E-02 0.208981E-02 0.419816E-02 gp 19 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.101488E-01 0.213944E-02 -0.721001E-03 gp 20 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.151121E-01 0.393959E-02 0.315228E-03 gp 21 0.231950E-01 0.231950
E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.231950E-01 0.653475E-02 0.197044E-01 gp 22 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.278725E-01 0.792405E-02 0.196770E-01 gp 23 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.492258E-01 0.158210E-01 0.944543E-03 gp 24 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.504478E-01 0.134764E-01 0.670228E-02 gp 25 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 0.594370E-01 -0.942184E-03 -0.134333E-02 gp 26 0.457128E-01 0.457128E-01 0.457128E-01 0.457128E-01 0.457128E-01 0.457128E-01 0.4
57128E-01 0.457128E-01 0.457128E-01 0.457128E-01 0.457128E-01 0.132510E-01 -0.286800E-02 gp 27 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.434699E-01 0.117749E-01 0.468031E-02 gp 28 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.330244E-01 0.101598E-01 0.424557E-02 gp 29 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.283537E-01 0.834460E-02 -0.118826E-02 gp 30 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.134292E-01 0.408619E-02 0.784153E-03 gp 31 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-01 0.197680E-0
1 0.625692E-02 -0.249868E-02 gp 32 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.235127E-01 0.726266E-02 0.256769E-02 gp 33 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.658384E-01 0.168055E-01 0.650789E-02 gp 34 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.129558E+00 0.360350E-01 0.224641E-02 gp 35 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.133164E+00 0.510737E-01 0.270159E-03 gp 36 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.124947E+00 0.399952E-01 -0.161003E-02 gp 37 0.111818E+00 0.111818E+00
0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.111818E+00 0.317198E-01 0.322549E-02 gp 38 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.994409E-01 0.498205E-01 0.533795E-03 gp 39 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.899864E-01 0.261549E-01 -0.595607E-02 gp 40 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.831425E-01 0.238012E-01 0.252756E-02 gp 41 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.784022E-01 0.201829E-01 0.749544E-02 gp 42 0.741777E-01 0.741777E-01 0.741777E-01 0.741777E-01 0.741777E-01 0.741777E-01 0.741777
E-01 0.741777E-01 0.741777E-01 0.741777E-01 0.741777E-01 0.372780E-01 0.102730E-02 gp 43 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.706649E-01 0.216619E-01 0.267829E-02 gp 44 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.698456E-01 0.194601E-01 0.566279E-02 gp 45 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.752847E-01 0.223158E-01 0.714465E-02 gp 46 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.920090E-01 0.229098E-01 -0.635722E-03 gp 47 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.123193E+00 0.
366803E-01 0.637679E-02 gp 48 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.168169E+00 0.472047E-01 0.549588E-02 gp 49 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.209348E+00 0.712533E-01 0.299886E-02 gp 50 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.235552E+00 0.578755E-01 0.148999E-02 gp 51 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.247790E+00 0.714624E-01 0.194720E-02 gp 52 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 0.246235E+00 -0.402602E-01 -0.269331E-03 gp 53 0.233803E+00 0.233803E+00 0.2
33803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.233803E+00 0.844577E-01 0.334404E-03 gp 54 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.229264E+00 0.688412E-01 0.152326E-02 gp 55 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.246461E+00 0.800921E-01 0.166075E-02 gp 56 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.289221E+00 0.890859E-01 0.488075E-02 gp 57 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.344531E+00 0.114049E+00 0.383224E-02 gp 58 0.391285E+00 0.391285E+00 0.391285E+00 0.391285E+00 0.391285E+00 0.391285E+00 0.391285E+00
0.391285E+00 0.391285E+00 0.391285E+00 0.391285E+00 0.114618E+00 0.689195E-02 gp 59 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.432562E+00 0.153633E+00 0.462829E-02 gp 60 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.473186E+00 0.135132E+00 0.897580E-02 gp 61 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.521440E+00 0.165255E+00 0.818273E-02 gp 62 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.579347E+00 0.173404E+00 0.314244E-02 gp 63 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.638942E+00 0.19475
8E+00 0.301028E-02 gp 64 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.702583E+00 0.219884E+00 0.523509E-02 gp 65 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.785706E+00 0.307538E+00 0.248919E-02 gp 66 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.900694E+00 0.279087E+00 0.217688E-02 gp 67 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.107473E+01 0.644333E-01 -0.152397E-02 gp 68 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.139200E+01 0.563751E+00 0.671439E-03 gp 69 0.230418E+01 0.230418E+01 0.230418
E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.230418E+01 0.455581E+00 0.113679E-01 -- MACROSCOPIC FISSION X-SECS for materials and cell, last column is cell flux 1 2 3 4 5 6 7 8 9 10 11 gp 1 0.258125E-01 0.258125E-01 0.258123E-01 0.258129E-01 0.258125E-01 0.258132E-01 0.258141E-01 0.258127E-01 0.258120E-01 0.258131E-01 0.258130E-01 0.787471E-02 0.272665E-02 gp 2 0.161547E-01 0.161547E-01 0.161546E-01 0.161550E-01 0.161547E-01 0.161552E-01 0.161558E-01 0.161548E-01 0.161544E-01 0.161553E-01 0.161551E-01 0.494833E-02 0.109512E-01 gp 3 0.159510E-01 0.159510E-01 0.159508E-01 0.159513E-01 0.159510E-01 0.159515E-01 0.159522E-01 0.159511E-01 0.159506E-01 0.159516E-01 0.159514E-01 0.487487E-02 0.228032E-01 gp 4 0.128648E-01 0.128648E-01 0.128646E-01 0.128651E-01
0.128647E-01 0.128652E-01 0.128659E-01 0.128649E-01 0.128644E-01 0.128654E-01 0.128652E-01 0.393462E-02 0.242933E-01 gp 5 0.228478E-02 0.228472E-02 0.228453E-0



Выложил так же как вижу в блокноте сам.

Шаг 2

for /L %%i in (1,1,9) do grep -A 1 "gp %%i" result.txt >> result%%i.txt
for /L %%i in (10,1,69) do grep -A 1 "gp %%i" result.txt >> result%%i.txt

Выделяем из файла result.txt 69 файлов - в каждом только одна группа (например только gp1)
по 35 "двойных строк.

Результатом будет 69 файлов со следующим содержанием:


gp 1 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.258187E-01 0.748169E-02 0.473275E-02 -- gp 1 0.258125E-01 0.258125E-01 0.258123E-01 0.258129E-01 0.258125E-01 0.258132E-01 0.258141E-01 0.258127E-01 0.258120E-01 0.258131E-01 0.258130E-01 0.787471E-02 0.272665E-02 -- gp 1 0.257867E-01 0.257854E-01 0.257839E-01 0.257850E-01 0.257851E-01 0.257862E-01 0.257887E-01 0.257886E-01 0.257885E-01 0.257898E-01 0.257873E-01 0.786697E-02 0.272804E-02 -- gp 1 0.257448E-01 0.257416E-01 0.257380E-01 0.257399E-01 0.257407E-01 0.257425E-01 0.257477E-01 0.257495E-01 0.257502E-01 0.257517E-01 0.257457E-01 0.785425E-02 0.273096E-02 -- gp 1 0.256913E-01 0.256855E-01 0.256793E-01 0.256823E-01 0.256839E-01 0.256867E-01 0.256953E-01 0.256995E-01 0.257012E-01 0.257031E-01 0.256926E-01 0.783803E-02 0.273307E-02 -- gp 1 0.256258E-01 0.256170E-01 0.256075E-01 0
.256118E-01 0.256145E-01 0.256185E-01 0.256312E-01 0.256383E-01 0.256413E-01 0.256436E-01 0.256275E-01 0.781827E-02 0.273425E-02 -- gp 1 0.255582E-01 0.



Шаг 3


for /L %%i in (1,1,9) do grep -v "gp %%i" result%%i.txt >> result%%ia.txt
for /L %%i in (10,1,69) do grep -v "gp %%i" result%%i.txt >> result%%ia.txt

Удаляем строки, которые начинаются с gp - все равно там нет нужной информации
Как результат имеем по прежнему 69 файлом типа result1a.txt


0.258187E-01 0.258187E-01 0.258187E-01 0.748169E-02 0.473275E-02 -- 0.258120E-01 0.258131E-01 0.258130E-01 0.787471E-02 0.272665E-02 -- 0.257885E-01 0.257898E-01 0.257873E-01 0.786697E-02 0.272804E-02 -- 0.257502E-01 0.257517E-01 0.257457E-01 0.785425E-02 0.273096E-02 -- 0.257012E-01 0.257031E-01 0.256926E-01 0.783803E-02 0.273307E-02 -- 0.256413E-01 0.256436E-01 0.256275E-01 0.781827E-02 0.273425E-02 -- 0.255796E-01 0.255822E-01 0.255603E-01 0.779791E-02 0.273478E-02 -- 0.255170E-01 0.255200E-01 0.254922E-01 0.777737E-02 0.273353E-02 -- 0.254707E-01 0.254740E-01 0.254417E-01 0.776241E-02 0.273621E-02 -- 0.254713E-01 0.254746E-01 0.254423E-01 0.776458E-02 0.276677E-02 -- 0.254639E-01 0.254673E-01 0.254344E-01 0.776210E-02 0.277126E-02 -- 0.254302E-01 0.254338E-01 0.253981E-01 0.775109E-02 0.277047E-02 -- 0.253763E-01 0.253802E-01 0.253398E-01 0.773347E-02 0.276891E-02 -- 0.253082E-01 0.253126E-01 0.252664E-01 0.771131E-02
0.276595E-02 -- 0.252259E-01 0.252307E-01 0.251774E-01 0.768457E-02 0.276183E-02 -- 0.251475E-01 0.251529E-01 0.250927E-01 0.765916E-02 0.275646E-02 -- 0.250686E-01 0.250745E-01 0.250072E-01 0.763371E-02 0.275172E-02 -- 0.250104E-01 0.250167E-01 0.249441E-01 0.761519E-02 0.275157E-02 -- 0.250112E-01 0.250175E-01 0.249449E-01 0.761746E-02 0.278151E-02 -- 0.250048E-01 0.250111E-01 0.249380E-01 0.761530E-02 0.278501E-02 -- 0.249758E-01 0.249822E-01 0.249070E-01 0.760593E-02 0.278255E-02 -- 0.249296E-01 0.249364E-01 0.248576E-01 0.759105E-02 0.277882E-02 -- 0.248717E-01 0.248787E-01 0.247956E-01 0.757238E-02 0.277362E-02 -- 0.248017E-01 0.248091E-01 0.247207E-01 0.754993E-02 0.276745E-02 -- 0.247329E-01 0.247407E-01 0.246469E-01 0.752789E-02 0.276060E-02 -- 0.246637E-01 0.246718E-01 0.245726E-01 0.750583E-02 0.275417E-02 -- 0.246126E-01 0.246211E-01 0.245176E-01 0.748978E-02 0.275337E-02 -- 0.246133E-01 0.246218E-01 0.245184E-01
0.749204E-02 0.278428E-02 -- 0.246102E-01 0.246186E-01 0.245150E-01 0.749093E-02 0.278679E-02 -- 0.245961E-01 0.246046E-01 0.245002E-01 0.748635E-02 0.278328E-02 -- 0.245737E-01 0.245823E-01 0.244766E-01 0.747907E-02 0.277875E-02 -- 0.245455E-01 0.245542E-01 0.244468E-01 0.746991E-02 0.277283E-02 -- 0.245113E-01 0.245202E-01 0.244106E-01 0.745886E-02 0.276605E-02 -- 0.244744E-01 0.244834E-01 0.243713E-01 0.744696E-02 0.275907E-02 -- 0.244372E-01 0.244463E-01 0.243316E-01 0.743503E-02 0.275258E-02


Шаг 4

for /L %%i in (1,1,69) do grep -v -e "--" result%%ia.txt >> result%%ib.txt
Удаляем знаки "--"

Шаг 5

for /L %%k in (1,1,69) do awk "{print $5}" result%%kb.txt >> result%%kc.txt

Выделяем в каждом из 69 файлов пятые слова в строчках.
Получаем 69 файлов в каждом из которых столбец из 35 значений.
Например result1c.txt


0.473275E-02
0.272665E-02
0.272804E-02
0.273096E-02
0.273307E-02
0.273425E-02
0.273478E-02
0.273353E-02
0.273621E-02
0.276677E-02
0.277126E-02
0.277047E-02
0.276891E-02
0.276595E-02
0.276183E-02
0.275646E-02
0.275172E-02
0.275157E-02
0.278151E-02
0.278501E-02
0.278255E-02
0.277882E-02
0.277362E-02
0.276745E-02
0.276060E-02
0.275417E-02
0.275337E-02
0.278428E-02
0.278679E-02
0.278328E-02
0.277875E-02
0.277283E-02
0.276605E-02
0.275907E-02
0.275258E-02



Шаг 6

for /L %%j in (1,1,35) do for /L %%i in (1,1,69) do sed -n "%%jp" result%%ic.txt >> result%%jd.txt

Сначала собираем 1е строки по всем 69 файлам и записываем в result1d.txt - это
спектр нейтронов на первом этапе работы реактора. Далее - еще 34 файла по 69
значений - для следующих этапов.

Шаг 7

for /L %%i in (1,1,69) do del result%%i.txt
for /L %%i in (1,1,69) do del result%%ia.txt
for /L %%i in (1,1,69) do del result%%ib.txt
for /L %%i in (1,1,69) do del result%%ic.txt

Удаляем все лишнее

Шаг 8

Я собираюсь построить графики в MS Excel
Следовательно мне хотелось бы заменить точки на запятые

for /L %%i in (1,1,35) do sed "s/\./\,/g" result%%id.txt >> result%%ie.txt

И ещё немного прибираемся

for /L %%i in (1,1,69) do del result%%id.txt

Шаг 9

Нужно загнать эти 35 файлов в Excel и желательно построить графики автоматически
как это сделать пока неясно. При отправке в Excel жалобы на формат. Как делать
макрос, а тем более, управляемый из bat-файла - я не знаю.

Похожие статьи:

1 🖧 Удалённый рабочий стол
2 - Доступ по RDP через SSH туннель под Windows
3 🄭 Доступ к CD приводу через удалённый рабочий стол
Нотик
4 - Установка Windows на gpt диск
5 - Режим разработчика Windows 10
6 - Добавить скрипт в автозагрузку
7 - Системная переменная окружения PATH
8 - Bash в Windows 10
9 - Batch файлы
10 - Обработка текста: Grep, sed, awk
11 📀 Запись образа с Ultraiso
12 Сочетания клавиш
13 - Список установленных в Windows драйверов
14 🔥 Firewall Windows
15 Проброс портов

Вы нашли то, что искали на сайте?

Или оцените по десятибальной шкале

Если сайт не помог, извиняемся за потраченное время - хочу заверить, что мы стараемся не попадать в нерелевантные запросы, но тем не менее не всегда успеваем обновлять ключевые слова. Ну и контролировать поисковую выдачу, конечно, невозможно.

Например: у нас есть статья про аэропорт Хельсинки и про аэропорт Риги но в выдаче по Риге всё равно статья про Хельсинки.

Если статья Вам помогла, нажимайте ДА. Так мы поймём, что переделывать её не нужно.

Занятно наблюдать в вебвизоре, как люди копируют текст, например вежливого отказа в трудоустройстве на английском но игнорируют кнопку ДА.

Сделаем поиск лучше!

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети:
tetrika-school
Domino's Pizza
?>