Во-первых, я хотел бы извиниться за мои чрезвычайно базовые знания о кодировании.Тогда я надеюсь, что смогу правильно выразить себя по поводу моей проблемы.Не стесняйтесь спрашивать дальнейшие разъяснения или что-нибудь еще ...
У меня возникают проблемы с постобработкой данных ...
Моя цель - рекомбинировать данные, которые были заменены.
РЕДАКТИРОВАТЬ: здесь находится папка .rar с моим тестовым примером, который работает, и тот, который я пытаюсь заставить работать ... (не бойтесь времени, которое требуется для обработки данных)
https://drive.google.com/file/d/1AEPUc8haT5_Z3LR3jnZZlpyfxhdDwwo6/view?usp=sharing
РЕДАКТИРОВАТЬ 2: Вот что я ожидаю на бумаге (это моя папка TestReorder3OK в моем архиве rar)
введите описание изображения здесь
РЕДАКТИРОВАТЬ 3: МИНИМАЛЬНЫЙ ПОЛНЫЙ ПРИМЕР
Сценарий:
#!/bin/bash
# Definir le nombre de replica
NP=3
NP1=$[NP-1]
rm torder*
for repl in `seq 0 $NP1`
do
echo $repl
# colle la colonne 2 du fichier .lammps dans un fichier rep_0, puis dans la seconde boucle, la colonne 3 dans rep_1, etc.
awk -v rep=$repl '{r2=rep+2;print $r2}' < log.lammps > rep_$repl
i=0
j=0
# cree une boucle dans la boucle
for a in `cat rep_$repl`
do
i=$[i+1]
j=$[j+3]
head -$i screen.$repl.temp | tail -1 >> torder.$a
head -$j ccccd2_H_${repl}_col.bak2 | tail -3 >> ccccd2_H_${a}_temp_col.bak2
done
done
файл log.lammps
1 0 1 2
2 1 0 2
3 1 2 0
Начиная со столбца 2, этот файл содержит номер, связанный с входами ниже.Вот расширенное объяснение:
столбец 2 имеет три значения: 0, 1 и 1;0 соответствует первым трем строкам файла ccccd2_H_0_col.bak2
, следующие три - 1 и последним трем снова связаны со значением 1.
столбец 3 также имеет три значения: 1,0 и 2;1 соответствует первым трем строкам файла ccccd2_H_1_col.bak2
, следующие три - 0 и последним трем снова связаны со значением 2.
Та же история для столбца 4.
Теперь я хочу, чтобы каждый набор из трех строк, связанных со значением 0, помещался в один файл.Каждый набор из трех строк, связанных со значением 1, входит в другой отдельный файл, а наборы из трех строк, связанных со значением 2, относятся к последнему файлу.
Входные данные:
ccccd2_H_0_col.bak2
blank line
N a b c
C d e f
N g h i
C j k l
N m n o
C p q r
ccccd2_H_1_col.bak2
blank line
N s t u
C v w x
N y z a
C b c d
N e f g
C h i j
ccccd2_H_2_col.bak2
blank line
N k l m
C n o p
N q r s
C t u v
N w x y
C z a b
Выходы: Это желаемые выходные данные, которые я получаю для простых тестовых файлов
ccccd2_H_0_temp_col
blank line
N a b c
C d e f
N y z a
C b c d
N w x y
C z a b
ccccd2_H_1_temp_col
blank line
N g h i
C j k l
N m n o
C p q r
N s t u
C v w x
ccccd2_H_2_temp_col
blank line
N e f g
C h i j
N k l m
C n o p
N q r s
C t u v
Это отлично работает на малыхтестовые файлы (как показано здесь), но не в моей реальной системе.Для моей реальной системы у меня есть файл log.lammps
, который содержит 14 строк и 10 001 строк, и мои входные файлы, которые содержат 121 121 строк (таким образом, 10 001 * блок из 121 строки).Он создает файлы в 10 раз больше, чем нужно.
Не могли бы вы рассказать мне о моей проблеме?Я думаю, что это связано с разницей номера строки с моими файлами, содержащими одну строку, и файлами, содержащими декартовы координаты, но я действительно не понимаю ни ссылки, ни способа ее решения ...
СпасибоВы заранее ...