В этой статье Вы можете узнать в основном о работе с AWK.
Про SED есть отдельная статья SED
По умолчанию я предполагаю, что Вы работаете в
Bash под Windows 10
Как установить Bash в Windows 10 подробно описано
здесь
Для того чтобы применить 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
Та же замена, но с выводом в новый текстовый файл, который мы назовём 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
Специальные символы экранируются с помощью \
Предположим, что у нас есть файл 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
Предположим, что у нас есть файл 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\>/' input.txt > output.txt
Удалить всё что находится между квадратными скобками включая скобки
sed 's/\[.*\]//' input.txt > 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
Мы хотим отбросить всё, что находится левее слова 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
Выложил так же как вижу в блокноте сам.
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.
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
for /L %%i in (1,1,69) do grep -v -e "--" result%%ia.txt >> result%%ib.txt
Удаляем знаки "--"
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
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
значений - для следующих этапов.
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
Удаляем все лишнее
Я собираюсь построить графики в
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
Нужно загнать эти 35 файлов в Excel и желательно построить графики автоматически
как это сделать пока неясно. При отправке в Excel жалобы на формат. Как делать
макрос, а тем более, управляемый из bat-файла - я на тот момент не знал.Сейчас Вы
можете изучить эту тему в статье
Примеры программ VBA в Excel
Если сайт не помог, извиняемся за потраченное время - хочу заверить, что мы
стараемся не попадать в нерелевантные запросы, но тем не менее не всегда успеваем
обновлять ключевые слова. Ну и контролировать поисковую выдачу, конечно, невозможно.
Например: у нас есть статья про
аэропорт Хельсинки
и про аэропорт Риги но
в выдаче по Риге всё равно статья про Хельсинки.
Если статья Вам помогла, нажимайте ДА. Так мы поймём, что переделывать её не нужно.
Занятно наблюдать в вебвизоре, как люди копируют текст, например
вежливого отказа в
трудоустройстве на английском
но игнорируют кнопку ДА.
Сделаем поиск лучше!
Рекомендую наш хостинг beget.ru |
Пишите на info@urn.su если Вы: |
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык. |
2. Хотите разместить на сайте рекламу, подходящуюю по тематике. |
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте |
4. Нашли на сайте ошибку, неточности, баг и т.д. ... ....... |
5. Статьи можно расшарить в соцсетях, нажав на иконку сети:
|