Модификация на основе столбцов и строк с использованием bash - PullRequest
0 голосов
/ 03 октября 2018

У меня есть один файл, который содержит 1 000 000 строк, как показано на вкладке ниже.Я хочу обрезать 3-й столбец, который содержит домены, URL-адреса, URN-адреса и URI-адреса, до просто доменного имени.Я хочу сделать это на Debian, используя bash.

Ввод:

k285N2YBqOyRFMJBdrP0,10, someurl.ds / dsadsa / dsadsads.exe /, это плохо url_feed k285N2YBqOyRFMJBdrP1,10, * bad2F2F2_F2_1002 ** 1007, 10, https://someurl.ds/dsadsa/dsadsads.exe/,This плохо url_feed k285N2YBqOyRFMJBdrP3,10, someurl.ds / dsadsa / http / test / com, это плохо url_feed k285N2YBqOyRFMJBdrP4,10, abcdsomeurl.ds / dsadsa dsadsaurl_feed k285N2YBqOyRFMJBdrP5,10, anyelse.someurl.ds / dsadsa / dsadsads.exe /, это плохо url_feed

Вывод:

k285N2YBqOyRFJ, 0,40 юр. юр.Это плохо url_feed k285N2YBqOyRFMJBdrP1,10, www.someurl.ds, Это плохо url_feed k285N2YBqOyRFMJBdrP2,10, someurl.ds, плохоЭто плохо url_feed k285N2YBqOyRFMJBdrP5,10, everythingelse.someurl.ds, Это плохо url_feed

Я сокращаю 3-й столбец, как хочу:

cat test3.txt | cut -d"," -f3 | sed -E -e 's_.*://([^/@]*@)?([^/:]+).*_\2_' | cut -d "/" -f1

Как я могуизвлечь 3-й столбец, изменить ивернуться на место?

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете использовать следующее awk:

awk 'BEGIN { OFS=FS="," } { sub(/.*:\/\/([^\/@]*@)?/, "", $3); sub(/[\/:].*/, "", $3); print; }' file > outfile

Здесь

  • BEGIN { OFS=FS="," } установит разделитель полей на ,
  • sub(/.*:\/\/([^\/@]*@)?/, "", $3) удалит часть значения столбца 3 в начале, которое вам не нужно
  • sub(/[\/:].*/, "", $3) удалит завершающую часть значения столбца 3, которое вам не нужно

Обратите внимание, чтовместо команды print вы можете использовать 1 после } (это то же самое, что и в конце, он печатает текущую запись): 'BEGIN { OFS=FS="," } { sub(/.*:\/\/([^\/@]*@)?/, "", $3); sub(/[\/:].*/, "", $3); }1'.

См. онлайндемо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...