Вы хотите использовать dirname $file
получить имя каталога Вашего входного файла и предварительно ожидать это к выходному имени файла.
for file in $(find ./ -name "*.nii")
do
rawdata = $(dirname $file)/rawdata.nii
fslroi $file $rawdata 0 33
gunzip $rawdata.gz -f
fslroi $rawdata rawnodif 0 1
bet rawnodif rawnodif_brain -m -g 0.2 -f 0.3
fslmaths rawnodif -mas rawnodif_brain_mask rawnodif_brain
gunzip rawnodif_brain_mask.nii.gz -f
done
Это неясно который из rawdata
фактические аргументы команды или если все - имена файлов. То же с rawnodif_brain_mask
который Вы, возможно, должны были бы адаптировать таким же образом.
Имея такую же проблему, я не могу монтировать внешний том защищенным-скрытым, но я могу монтировать как незащищенный хорошо, но я могу легко завинтить свои скрытые данные из-за этого.
Если я пытаюсь подключить его защищенным я получаю эту ошибку от монтирования:
mount: wrong fs type, bad option, bad superblock on /dev/mapper/tmp.000,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
Похоже, что он не распознает исходную файловую систему и не позволяет мне монтировать, даже если я определяю тип файловой системы в команде mount
.
Однако для этого я нашел один обходной путь, сразу после того, как вы сопоставили устройство, защищенное с помощью tcplay
Я использовал mkfs
для создания файловой системы, после чего оно было установлено нормально, а скрытый том остался нетронутым.
Но есть проблема с таким подходом, допустим, вы создадите контейнер 10Mb, с 6Mb скрытым томом, при создании файловой системы после активировать защиты скрытого тома вы получите 4Mb том, и это покажет, как 4Mb, даже если вы монтируете внешний том, это должно показать 10Mb, так что у нас будет проблема с правдоподобной отрицаемостью, каково использование скрытого тома, если нельзя скрыть используемое пространство для скрытого тома
-121--114613- Intel MacBook Pro использует таблицу разделов GUID для разбиения диска, которую можно редактировать с помощью gdisk
.
Копия метаданных таблицы разделов обычно хранится как резервная копия основного файла. Более подробную информацию об этом можно найти в Arch Wiki здесь
Необходимо сначала узнать имя устройства, /dev/sda
, /dev/sdb
вашего диска Mac.
Для определения точного имени можно использовать команды blkid
, lsblk
или dmesg
.
В Ubuntu Live USB используйте gdisk/dev/sdX
(где X - имя устройства)
например ,/dev/sdb (при условии, что USB задан sda, а Mac является единственным другим диском)
$ sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): `r`
Recovery/transformation command (? for help): `b`
Recovery/transformation command (? for help): `w`
И перезагрузка
b
восстанавливает резервную таблицу разделов GUID и w
записывает ее на диск
Вы путь хотите запустить v
verify после восстановления резервной таблицы и перед записью на диск. gdisk
очень благоразумно относится к созданию и изменению таблицы разделов в памяти, и ничего не записывается на диск, пока не будет записана команда w
. Убедитесь, что вы довольны результатом восстановления, прежде чем записать его на диск.
Вероятно, awk
будет самым быстрым инструментом оболочки здесь. Вы можете попробовать:
awk "/$regex1/ { ++r1 }
/$regex2/ { ++r2 }"'
END { print "regex1:",r1 "\nregex2:",r2 }' <infile
Конечно, если вам нужно использовать perl
регулярные выражения, как ваш вопрос, то на самом деле perl
является единственным ответом. Однако awk
использует расширенные выражения (например, grep -E
) в отличие от базовых.
Самое быстрое решение, которое я могу подумать, это Flex . Ниже приведен непроверенный скелет:
%{
int count[1000];
%}
%%
regex0 {count[0]++; }
regex1 {count[1]++; }
...
.|\n {}
%%
int main(){
yylex();
// printf the counts;
}
Flex делает довольно хорошую работу в оптимизации автоматов и генерирует быстрый C-код.
Вы должны перекомпилировать его, если изменение Regexs ...
Редактировать : Если вы реализуете и попробуете какие-либо решения, было бы интересно увидеть время.
В случае, если Python является опцией, вы можете сначала Memory-map файл, а затем запустить инкрементальный регрессионный поиск по нему, воспользовавшись именованными группами , чтобы посчитать происшедшие паттерны. Данное решение терпимо для больших размеров файла
from collections import Counter
import re, mmap, contextlib
c = Counter()
with open('data_file', 'r+') as f:
with contextlib.closing(mmap.mmap(f.fileno(), 0)) as data:
for m in re.finditer(r'(?P<pat1>regex1)|(?P<pat2>regex2)|(?P<pat3>regex3)',data):
c.update(k for (k, v) in m.groupdict().iteritems() if v)
print c.most_common()
[('pat3', 3), ('pat1', 2), ('pat2', 2)]