выборочно перемещая частично подобранные файлы в различные каталоги

Вы могли бы посмотреть на Netsniff-NG , который не построен ATOP LibPCAP и напрямую использует розетки Linux PF_Packet, но вы, вероятно, захотите (и, возможно, имеют ) Обрежьте себя, чтобы сделать его достаточно минимальным.

Я не знаю ни о каких «вот источник, просто собирать« минимальные снятия такого рода ».

0
27.08.2017, 14:55
2 ответа
sed '/^foo3=/P;/\n/!s/[^ ]\{1,\}=/\n&/g;D' <infile >outfile

Возможно, вам придется использовать литеральную новую строку вместо n выше, но при этом будет напечатано только содержимое между foo3 и foo4.

Для более быстрой обработки получите более четкое представление о ней:

sed '/\n/s/ [^ ]*=.*//p;/\n/!s/foo3=/\n\n&/;D' | grep .

Или с лишним grep верх также может быть намного быстрее:

sed 's/[^ ]\{1,\}=/\n&/g' | grep '^foo3='
-121--99055-

Если это в вашем файле метаданных:

12_12_myname1_abc GGG12345

означает, что вы должны скопировать файл GGG12345_abc.txt в каталог MYNAME1 вы можете проанализировать файл метаданных и скопировать файлы с awk:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "_" arr[4] ".txt " arr[3]; } { system(s); }' metadata

Вы можете сначала протестировать его, не используя system , чтобы узнать, что будет делать команда:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "_" arr[4] ".txt " arr[3]; } { print s; }' metadata

Если abc in:

12_12_myname1_abc GGG12345

не имеет значения, например, вам нужны только GGG12345 и MYNAME1:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "* " arr[3]; } { system(s); }' metadata

и снова сначала можно протестировать без использования system :

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "* " arr[3]; } { print s; } ' metadata
-121--244220-

Попробуйте проверить, будет ли приведенный ниже сценарий выполнять то, что вы хотите

while IFS="[ _]" read a b dir c file ; do echo mv -t ${dir^^} ${file}* ; done < index.file

, затем удалите echo .

0
28.01.2020, 04:57

Если это в вашем файле метаданных:

12_12_myname1_abc GGG12345

означает, что вы должны скопировать файл GGG12345_abc.txt в каталог MYNAME1, вы можете разобрать файл метаданных и скопировать файлы с помощью awk:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "_" arr[4] ".txt " arr[3]; } { system(s); }' metadata

Сначала вы можете протестировать его, не используя систему, чтобы посмотреть, что будет делать команда:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "_" arr[4] ".txt " arr[3]; } { print s; }' metadata

Если abc в:

12_12_myname1_abc GGG12345

не имеет значения, e. g вам нужно только GGG12345 и MYNAME1:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "* " arr[3]; } { system(s); }' metadata

и снова сначала вы можете протестировать его без использования системы:

awk '{ x = split($1, arr, "_"); arr[3] = toupper(arr[3]); s = "mv " $2 "* " arr[3]; } { print s; } ' metadata
0
28.01.2020, 04:57

Теги

Похожие вопросы