Как печатать только первые два слова определенного столбца с помощью awk

My orangepiplus2e computer has no bios, no firmware, and no hdd (other than 16GB micro-sd).

Хм, ваш Orange Pi Plus 2E имеет множество устройств с микроконтроллером и прошивкой, которыми вы не управляете и о которых ничего не знаете :Микроконтроллер -SD, USB-контроллер, чип Wifi, Ethernet чип и прочее на вашем Allwinner H3, например графический процессор Mali. Подумайте о «маленьких компьютерах на большом компьютере».

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

Let's say that I have files (docs) on my desktop

Кстати, самый простой способ защитить документы — убедиться, что они имеют формат, который невозможно выполнить. Как обычный ASCII или UTF -8. Таким образом, у вас никогда не будет проблем с ними. Исполняемый материал в документах — болезнь Windows.

Since there is no where for the malware to go (hdd,bios,firmware), other than staying on the doc file itself,

Предположим, что у вас есть какой-то файл со встроенным вредоносным ПО, и вы каким-то образом запускаете это вредоносное ПО, наиболее распространенным путем является его установка в работающую ОС, а затем заражение других файлов. Даже если он изначально был в документе, он не должен оставаться в документе; он может заразить исполняемые файлы. И он может делать это на любом типе хранилища, к которому подключена Micro -SD, на любых USB-накопителях, которые вы подключаете, на любых общих сетевых ресурсах... Он также может пытаться проводить атаки по сети.

Таким образом, «у вредоносной программы нет иного пути, кроме как оставаться в самом документе» — это совершенно неправильно.

And no browsers are open during this process.

Это совершенно не имеет значения.

Судя по вашему вопросу, вы, кажется, не очень хорошо представляете себе, что на самом деле происходит в компьютере, и каковы проблемы, связанные с безопасностью. Очень опасно делать выводы из такой ментальной модели.

Тем не менее, на практике риск вредоносного ПО в системах Linux не так высок по разным причинам, так что вам не следует слишком беспокоиться об этом.Если только вы не собираетесь реализовать военное приложение с высоким уровнем безопасности -на своем Orange Pi Plus 2E или что-то в этом роде.

Редактировать

For securing docs, most ".txt" or ".odt" - non-executable, yes?

Не путайте суффиксы имен файлов с форматами файлов. Тот факт, что файл заканчивается на .odt, не означает, что он на самом деле является форматом открытого документа. Если вы открываете такие документы, судя по суффиксу имени файла, вас может ждать сюрприз.

Обычный текст не может быть выполнен. Я не рассматривал Open Document подробно, но даже если там нет исполняемых расширений и т. д., он достаточно сложен, чтобы ошибки могли вызвать переполнение буфера, которым вы могли бы злоупотреблять для внедрения исполняемого кода.

As far as infected 'exe' file infecting OS, been told its just temporary unless in admin; once restart, gone.

Это правда, что когда вы перезагружаете компьютер, все в памяти исчезает. Однако целью каждого вируса является предотвращение этого, поэтому он будет заражать другие файлы, чтобы они снова загружались при перезагрузке компьютера.

Для этого он может использовать все файлы, доступные с текущими разрешениями. Таким образом, если вредоносная программа запускает вредоносное ПО от имени не -пользователя root («администратор» в Linux называется root), существует множество файлов, которые он может заразить, поэтому он перезапускается, как только этот пользователь снова входит в систему.

Он также мог использовать ошибки для повышения привилегий до root; тогда игра окончена -она может быть везде в файловой системе, и вы никогда не найдете все места.

It would have to get to the OS first, and with my system, I don't think it could do that;

См. выше.

I have high quality fw,

Брандмауэр защищает вас от сетевых атак. Он не защищает вас от вредоносных программ, работающих в вашей системе. Как я уже сказал :, у вас нет хорошей мысленной модели того, что на самом деле происходит на вашем компьютере (, например, вы не понимаете, что делает брандмауэр ). Не пытайтесь делать выводы из этой модели в вещах, связанных с безопасностью.

And that's my main point and question - could it jump directly from one exe to another exe, without 1st going to the OS?

«Переход к ОС» здесь не имеет смысла. Думайте об этом так :Как только вы запускаете вредоносное ПО, используя исполняемый файл или загружая файл, использующий эксплойт,вам придется предположить, что все файлы, к которым у пользователя есть права доступа, могут быть заражены. Или, с эксплойтами повышения привилегий, еще больше файлов.

Windows, yes, everything I said makes no sense.

Нет. Большая часть того, что вы чувствуете, не имеет смысла ни для Windows, ни для Linux. (Кстати, Linux — моя основная ОС ).

Seems like hdd,bios,firmware are the bridges that allow one infected exe to infect another exe w/o OS

0
21.09.2021, 09:56
3 ответа

Для более сложных tsv, например. если у вас есть вкладки внутри полей, awkне будет работать. Затем вы должны использовать правильный парсер CSV, например. pythonмодуль csv:

#!/usr/bin/env python3
import csv
with open('A.tsv') as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    for row in reader:
        row.append(' '.join(row[1].split()[:2]))
        print('\t'.join(row))
0
21.09.2021, 10:23

С помощью GNU awk для сокращений gensub()и \s/\S:

$ awk '{print gensub(/\S+\s+(\S+\s+\S+).*/,"&\t\\1",1)}' file
BC02    Streptococcus oralis  chromosome, complete genome   2712    94  0   99.073  2053209 CP023507.1  1597    Streptococcus oralis
BC02    Staphylococcus aureus  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597    Staphylococcus aureus
BC02    Streptococcus sp.  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597        Streptococcus sp.

или немного короче с GNU sed:

$ sed -E 's/\S+\s+(\S+\s+\S+).*/&\t\1/' file
BC02    Streptococcus oralis  chromosome, complete genome   2712    94  0   99.073  2053209 CP023507.1  1597    Streptococcus oralis
BC02    Staphylococcus aureus  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597    Staphylococcus aureus
BC02    Streptococcus sp.  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597        Streptococcus sp.

Вышеприведенное предполагает, что первое поле не содержит пробелов, как показано в ваших примерах.

0
21.09.2021, 12:44

Использование Raku (, ранее известного как Perl _6)

raku -ne 'print $_, "\t";.split(/\t/).[1].words.[0..1].put;' 

Пример ввода:

BC02    Streptococcus oralis  chromosome, complete genome   2712    94  0   99.073  2053209 CP023507.1  1597
BC02    Staphylococcus aureus  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597
BC02    Streptococcus sp.  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597

Разбивая приведенный выше код на три (3 )части,

1 ). разбиваем на табы, вытаскиваем второй элемент (помня, что в Раку нумерация начинается с нуля):

raku -ne '.split(/\t/).[1].put;'

дает образец вывода:

Streptococcus oralis  chromosome, complete genome
Staphylococcus aureus  chromosome, complete genome
Streptococcus sp.  chromosome, complete genome

2 ). Разбить на пробел -разделить words, взять первые два (2):

raku -ne '.split(/\t/).[1].words.[0..1].put;'

дает образец вывода:

Streptococcus oralis
Staphylococcus aureus
Streptococcus sp.

3 ). Объедините приведенное выше со всей ранее -существующей строкой, напечатав сначала переменную темы Raku $_(, а затем\t):

raku -ne 'print $_, "\t";.split(/\t/).[1].words.[0..1].put;'  

дает образец вывода:

BC02    Streptococcus oralis  chromosome, complete genome   2712    94  0   99.073  2053209 CP023507.1  1597    Streptococcus oralis
BC02    Staphylococcus aureus  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597    Staphylococcus aureus
BC02    Streptococcus sp.  chromosome, complete genome  2712    94  0   99.073  2053209 CP023507.1  1597    Streptococcus sp.

https://raku.org/

0
22.09.2021, 08:54

Теги

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