Если вы в отчаянии, вы можете загрузиться с диска Ubuntu, который вы изначально использовали, а затем следуйте этому руководству, чтобы установить восстановление загрузки в своем Live Ubuntu, сбегая с диска.
Как только вы это сделаете, Я уверен, что он снова установит Grub и предоставит вам возможность загрузки с вашего раздела Windows. После того, как вы закончите описанное выше руководство, вы должны иметь загрузочную установку Windows, хотя и с страницей Grub, которая появляется в начале загрузки, как и в Ubuntu.
По крайней мере, это поможет вам , и нет проблемы с запуском Grub только с Windows.
Перл для спасения!
#!/usr/bin/perl
use warnings;
use strict;
my $file = shift;
my $regex = join '|', map quotemeta, @ARGV;
$regex = qr/\b($regex)\b/;
open my $IN, '<', $file or die "$file: $!";
while (<$IN>) {
if (my ($match) = /$regex/) {
print my ($first) = /^\S+/g;
if ($match ne $first) {
print "\t$match";
}
print "\n";
}
}
Сохранить как first-plus-word, запуститься как
perl first-plus-word file.txt text thing try Better
Он создает регулярное выражение из входных слов. Каждая строка затем сопоставляется с регулярным выражением, и если есть совпадение, первое слово печатается, и если оно отличается от слова, это слово также печатается.
Вот версия awk:
awk '
NR==FNR {a[$0]++; next;}
{
gsub(/"/,"",$0);
for (i=1; i<=NF; i++)
if ($i in a) printf "%s\n", i==1? $i : $1"\t"$i;
}
' file2 file1
, где file2 - список слов, а file1 содержит фразы.
Вот версия python:
#!/usr/bin/env python
from __future__ import print_function
import sys
# List of strings that you want
# to search in the file. Change it
# as you fit necessary. Remember commas
strings = [
'text', 'thing',
'try', 'Better'
]
with open(sys.argv[1]) as input_file:
for line in input_file:
for string in strings:
if string in line:
words = line.strip().split()
print(words[0],end="")
if len(words) > 1:
print("\t",string)
else:
print("")
$> cat input_file.txt
This is a single text line
Another thing
It is better you try again
Better
$> python ./initial_word.py input_file.txt
This text
Another thing
It try
Better
Боковое примечание: сценарий совместим python3, поэтому вы можете запускать его с помощью python2 или python3.
Попробуйте это:
$ sed -En 's/(([[:alnum:]]+)[[:space:]].*)?(text|thing|try|Better).*/\2\t\3/p' File
This text
Another thing
It try
Better
Если вкладка перед Better является проблемой, попробуйте это:
$ sed -En 's/(([[:alnum:]]+)[[:space:]].*)?(text|thing|try|Better).*/\2\t\3/; ta; b; :a; s/^\t//; p' File
This text
Another thing
It try
Better
Вышеописанное было протестировано на GNU sed ( gsed на OSX). Для BSD sed могут потребоваться некоторые незначительные изменения.
Простой подход bash / sed:
$ while read w; do sed -nE "s/\"(\S*).*$w.*/\1\t$w/p" file; done < words
This text
Another thing
It try
Better
while read w; do ...; done < words будет перебирать каждую строку в файле words и сохранять ее как $w. [F5] заставляет sed ничего не печатать по умолчанию. Затем команда sed заменит двойные кавычки, за которыми следуют не-пробелы (\"(\S*), скобки служат для «захвата» того, что соответствует \S*, первое слово, и мы можем позже ссылаться на него как \1), 0 или более символов (.*), а затем искомое слово ($w) и 0 или более символов (.*). Если это соответствует, мы заменяем его только 1-м словом, вкладкой и $w (\1\t$w) и печатаем строку (это то, что делает p в s///p).
Это версия Ruby
str_list = ['text', 'thing', 'try', 'Better']
File.open(ARGV[0]) do |f|
lines = f.readlines
lines.each_with_index do |l, idx|
if l.match(str_list[idx])
l = l.split(' ')
if l.length == 1
puts l[0]
else
puts l[0] + "\t" + str_list[idx]
end
end
end
end
В образце текстового файла hello.txt содержится
This is a single text line
Another thing
It is better you try again
Better
Запуск с ruby source.rb hello.txt приводит к
This text
Another thing
It try
Better