команда, которая возьмет файл и разделит каждое слово так, чтобы оно было в отдельной строке

Вы можете использовать параметр - list-packets , чтобы получить дамп того, что находится в файле gpg. Описание формата файла: RFC 4880 (стандарт OpenPGP).

Подпись напрямую не содержит хеша. Он содержит информацию, которая позволяет проверить как хэш, так и отправителя: существует алгоритм проверки подписи , который принимает на вход хеш-значение и открытый ключ и возвращает yes или ] № ; алгоритм возвращает да , если подпись была сделана закрытым ключом, соответствующим данному открытому ключу из сообщения с данным закрытым ключом, и возвращает нет во всех других обстоятельствах (подпись другой хеш, подпись, сделанная другим ключом, или набор байтов, которые вообще не могут быть подписью). По алгоритму DSA я считаю невозможным извлечь хэш из подписи, если у вас нет закрытого ключа.

Файл подписи содержит личность подписавшего, а также значение подписи. Для проверки подписи gpg считывает открытый ключ подписывающей стороны из вашей связки ключей, вычисляет хэш данных и применяет алгоритм проверки подписи.

1
29.09.2018, 13:57
4 ответа

Попробуйте:

cat file.txt | tr [[:upper:]] [[:lower:]] | tr '\n' ' ' | sed -E 's/[ \t]+/\n/g'

Ваш tr -d '\n'объединяет все слова, удаляя пробелы. tr '\n' ' 'выше сохраняет расстояние.

Затем интервал необходимо преобразовать в один пробел, sed выше делает это. Преобразует несколько пробелов (или табуляции)[ \t]+в одну новую строку \n.

1
28.04.2021, 23:41

Опция Grep -oидеальна для этого :, она печатает каждое совпадение на отдельной строке.

grep -E -o '[[:alpha:]]{2,}' file.txt

И если вы хотите это в нижнем регистре

grep -E -o '[[:alpha:]]{2,}' file.txt | tr '[:upper:]' '[:lower:]'

Обратите внимание, что регулярное выражение grep использует двойные скобки, а tr — нет :, потому что класс символов в регулярном выражении должен заключаться в скобки, а tr не использует регулярные выражения, а использует наборы символов.

3
28.04.2021, 23:41

Ответить на вопрос по заголовку:

command that will take a file and separate each word so its on its own line

Вы могли бы сделать:

<file tr '\n\t\r' ' '' '' ' | tr -s ' ' '\n'   # needs three spaces !

Он преобразует символы новой строки, табуляции и возврата каретки в пробелы, а затем…
преобразовать любую серию(-s)пробелов обратно в одну новую строку.

Вы можете воспользоваться командой tr и использовать ее для преобразования верхнего регистра в нижний в том же вызове.:

<file tr '[:upper:]\n\t\r' '[:lower:]   ' | tr -s ' ' '\n'

Или вы можете сделать то же самое в GNU sed (с учетом того, что это загрузит весь файл в память и предполагает, что внутри файла нет байтов NUL):

<file sed -zE -e 'y/A-Z\n\t\r/a-z   /;s/ +/\n/g'

Затем, чтобы ответить на вопрос в теле:

(a word is defined to be a contiguous sequence of letters, so 1 letter words don't count) and to remove all blank lines.

вы можете удалять слова с символами, отличными от a -z, односимвольные слова и пустые строки:

sed -E '/[^a-z]/d;/^.$/d;/^$/d'

Его можно свести к несколько более загадочному:

sed -E '/[^a-z]/d;/^(.|)$/d'

Все в одну строку, либо:

<file tr '[:upper:]\n\t\r' '[:lower:]   ' | tr -s ' ' '\n' | sed -E '/[^a-z]/d;/^(.|)$/d'

Или:

<file sed -zE -e 'y/A-Z\n\t\r/a-z   /;s/ +/\n/g' | sed -E '/[^a-z]/d;/^(.|)$/d'

Версия с комментариями (работает в GNU sed):

# Source `file` and use sed with the `zero` option (-z) and Extended Regex (ERE `-E`)
<file sed -zE -e '
    # Transliterate (-y) UPPER to lower and convert control to space.
y/A-Z\n\t\r/a-z   /
    # Restore consecutive spaces to **one** newline.
s/ +/\n/g
    # Second call to sed.
' | sed -E '
    # Delete (d) lines that have nay character not in the range a-z.
/[^a-z]/d
    # delete any line with one character or empty.
/^(.|)$/d
'
1
28.04.2021, 23:41
$ echo '  HTE ONTE NOTEH ONTEH E E O  AOE  ' | perl -pe '$_ =~ s/\b\w\b//g; $_ =~ s/\W*(\w+)\W*/\L$1\n/g'
hte
onte
noteh
onteh
aoe

При этом Perl используется для того, чтобы сначала удалить любые одиночные -символьные слова из ввода, а затем извлечь и -уменьшить регистр каждого оставшегося слова с удаленными не -словесными символами и с каждым словом в отдельной строке.

0
28.04.2021, 23:41

Теги

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