Данные извлечения из файла и места в различных файлах на основе одного значения столбца

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

Проблема, когда-то поставлена под угрозу, машина (и другие машины, к которым она может получить доступ к), становится ненадежным (поскольку невозможно знать, изменили ли они что-нибудь. Таким образом, необходимо предположить, что они сделали. И если бы они сделали, то они могли бы изменить ОС/ядро, команды, файловую систему, загрузочные секторы, что-либо. Это могло просто действовать "нормальное" и скрыть определенные файлы или папки или сетевые пакеты. Вы не можете доверять никаким командам на машине, к которой получили доступ хакеры.)

Обычно лучшая тактика (и самое быстрое!) "уничтожение с орбиты" подход: отключите ту машину из всех сетей (LAN, и т.д.), скопируйте документы и переустановите целую машину с помощью CD (т.е., чистое и не умеренные с источником). И затем восстановите только документы о нем (никакой exe, никакой dll, никакие двоичные файлы, никакие сценарии (или проверьте их thourougly), и т.д.). И зафиксируйте то, что позволило нарушение во-первых прежде, чем включить его в сети снова.

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

Та же тактика применялась бы на тех также...

Оставьте часть "расследования" другим людям, и другие времена (имейте в наличии диск для того, когда у Вас есть время).

Поскольку режим, детализированный процедура, https://serverfault.com/a/218011/146493, RobM, является хорошим чтением с нормальными и важными шагами.

13
06.06.2019, 12:07
4 ответа

Использовать awk:

awk -F, '{ print > $2 ".csv" }' file.csv

Это создаст эти два файла 577.csv и 132.csv в Вашем текущем каталоге.

Команда выше предполагает, что Вы можете только иметь 132 или 577 как второе поле. Это создаст одно имя файла для каждого из значений, найденных во втором поле всего file.csv.

Если существуют другие значения кроме двух, Вы интересуетесь, и Вы хотите проигнорировать те строки, сделать это вместо этого:

awk -F, '$2 == "577" || $2 == "132" { print > $2 ".csv" }' file.csv
26
27.01.2020, 19:52

Мне нравится terdon's awk решением, но ради полноты, вот является предложение с помощью только bash

while IFS=, read -r a1 a2 a3 a4; do 
    echo "$a1,$a2,$a3,$a4" >> "$a2".csv
done < file.csv

Это произведет файлы 577.csv и 132.csv в текущем каталоге.

3
27.01.2020, 19:52

Извлечь все 577 к stdout

grep -e '^.*,577,.*,.*$' youfile.csv >result_extract_557.csv

- отредактируйте 1 Исправленный, на основе комментария @terdon ниже для предотвращения ложных соответствий когда по крайней мере 3 запятые на строке с 577.

grep -e '^[:alnum:]*,577,[:digit:]*,[:digit:]*$' youfile.csv >result_extract_557.csv

Но я думаю его awk решение является более всесторонним.

3
27.01.2020, 19:52
  • 1
    Это будет соответствовать, даже если 577 будет на другом поле, не втором или если это - часть поля. Например, foo577bar или yp9012,132,8,577. –  terdon♦ 07.02.2014, 18:50
  • 2
    я думал свои запятые, сделает это полевым зависимым положения? –  X Tian 07.02.2014, 18:58
  • 3
    Извините, я дал плохие примеры, но .* может также соответствовать запятым, таким образом, Вы не знаете, какому полю Вы соответствуете. Могло быть вторым, могло также быть 45-м. Моя вторая жалоба была неправильной, Вы правы, что запятые защищают от соответствия foo577bar. –  terdon♦ 07.02.2014, 19:01
  • 4
    спасибо, что сделать, если | символ используется вместо. получение –  user3116123 11.02.2014, 17:41
  • 5
    ниже ошибки grep: недопустимая опция - e Использование: grep-hblcnsviw файл шаблона... –  user3116123 11.02.2014, 17:44

Использование csvkit :

$ csvgrep -c 2 -m 577 data.csv >output.csv

-c 2 заставляет cvsgrep рассматривать второй столбец, а с -m 577 мы попросите его сопоставить строку 577 в этом столбце.

В output.csv будет записано следующее:

yp1234,577,1,3
yp5678,577,3,5

Чтобы сопоставить несколько строк и записать вывод в файл для каждой строки:

for pattern in 577 132; do
  csvgrep -c 2 -m "$pattern" data.csv >"output-$pattern.csv"
done

Это создаст два файла output-132.csv и output-577.csv .

1
27.01.2020, 19:52

Теги

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