Вы можете запустить программу с домашнего компьютера по SSH. Приложение все равно будет работать на компьютере дома, но передаваться через Интернет. Это можно сделать через X Переадресацию.
Учебное пособие по переадресации X можно найти в следующих 2 URL;
https://help.ubuntu.com/community/ssh/Openssh/portForwarding
Вы можете выполнить задание SED
on-lister:
sed '/(\?\([0-9]\+\))\?$/s//; number=\1/
t n
s/$/; number=0/
:n
/^.*, [0-9]\?\([WURBG]\)/{
s//color=\1/
s/[WURBG]\{2,\}/M/
}
/[Ll]and/s/^[^;]*/color=L /
/color/!s/^[^;]*/color=C /' file
Но я хотел бы предложить команды PUT в Файл сценария
:
#!/bin/sed -f
/(\?\([0-9]\+\))\?$/s//; number=\1/
t n
s/$/; number=0/
:n
/^.*, [0-9]\?\([WURBG]\)/{
s//color=\1/
s/[WURBG]\{2,\}/M/
}
/[Ll]and/s/^[^;]*/color=L /
/color/!s/^[^;]*/color=C /
Затем выполните
sed -f script.file file
Обратите внимание, что все вышеперечисленные REGEX тестируются только на вашем примере, и если вы встретите неразрушиваемые работы, его можно урегулировать небольшую настройку.
В то время как вы можете сделать эту вещь, обернув более примитивные инструменты Unix - GREP
, SED
, awk
и т. Д. - В скрипте оболочки Эта проблема действительно хочет обрабатываться в полном языке программирования, который имеет мощную систему регулярного выражения. Лично я бы достигли Perl:
#!/usr/bin/perl -w
use strict;
my $line = 0;
my ($junk, $color, $number);
open my $data, '<', 'data.txt' or die "open: $!\n";
while (<$data>) {
chomp;
++$line;
if (m/Land/) {
print "color=L, number=0\n";
}
else {
($junk, $color, $number) = m/, (\d+)?([WURBG]+) \((\d+)\)$/;
if (defined $color and defined $number) {
$color = 'M' if length($color) > 1;
print "color=$color, number=$number\n";
}
else {
($junk, $number) = m/, (\d+)? ?\((\d+)\)$/;
if (defined $number) {
print "color=C, number=$number\n";
}
else {
print "Line #$line is malformed!\n";
}
}
}
}
data.txt
содержит это:
Sorcery, R (1)
Creature — Beast 5/3, 4G (5)
Sorcery, 1WWU (4)
Legendary Land
Artifact, (0)
Legendary Creature — Eldrazi 15/15, 15 (15)
Есть только одно отличие от того, что вы разместили: линия «Артефакт» в вашем вопросе не имеет скобок вокруг 0 , что потребовало бы исключения, которое будет сделано в парсере. Это может быть добавлено, но я не понимаю, почему это лучше, чем исправить формат файла данных.
Я предполагаю, что вы не просто хотите, чтобы значения цвета и количества напечатаны, так как этот скрипт. Вы поставили свой собственный код для каждого из линий линий
.
BIT BIT
BIT
исходит из моего предположения о том, что цифра до цветной буквы (ы) может быть значительной. Я использую его, чтобы помочь парсеру сделать это. Если у вас есть реальное использование для этой цифры, вы можете переименовать $ Junk
переменную, чтобы иметь семантическое значение. Это только «мусор» для меня, потому что я не знаю, что означает значение.