SED bash script Assistance - PullRequest
       19

SED bash script Assistance

1 голос
/ 10 февраля 2012

Я пытаюсь проследить, за кем следует мой друг (всего 1522)

и получил текстовый файл со своей страницы в Твиттере, и я хочу увидеть только последнее слово строки, котораяначинается с @.

Пример:

Podcaster, broadcaster and tech pundit. The Tech Guy on the Premiere Radio
    Networks. Live at live.twit.tv For my link feed follow @links_for_twit

(обернутый строкой для удаления ненавистной горизонтальной полосы прокрутки.)

Я хочу, чтобы это превратилось в @links_for_twit.

Ответы [ 4 ]

2 голосов
/ 10 февраля 2012

Вместо этого используйте awk:

 awk '$NF ~ /^@/ {print $NF}'
1 голос
/ 10 февраля 2012

Если вы хотите использовать sed, попробуйте это:

sed -n 's/.*\(@.*\)/\1/p'

-n: ничего не печатать, пока не спросят

s/.*\(@.*\): захватить все после последнего '@' в строке

/\1/: заменить всю строку захваченным битом

p: печать, если была сделана замена

Надеюсь, это поможет

РЕДАКТИРОВАТЬ: Я только что увидел жалобу ниже об адресах электронной почты. Вы можете добавить \s непосредственно перед @, чтобы убедиться, что есть пробел: sed -n 's/.*\s(@.*\)/\1/p'

1 голос
/ 10 февраля 2012

Вы имеете в виду, как:

grep -o '@[a-zA-Z_0-9]*$' tweets.txt

?

0 голосов
/ 10 февраля 2012

Если у вас есть GNU grep, вы можете использовать регулярное выражение со вкусом Perl, чтобы убедиться, что @ стоит в начале слова:

grep -Po '(?<=^|\s)@\w+' filename
...