извлекать совпадения группы захвата регулярных выражений из файла - PullRequest
7 голосов
/ 26 июля 2011

Я хочу выполнить заглавное действие в командной строке linux (также подойдет несколько сценариев ca bash). команда, которую я попробовал:

sed 's/href="([^"])"/$1/g' page.html > list.lst

но, очевидно, это не удалось.

Если быть точным, вот мой ввод:

<link rel="stylesheet" type="text/css" href="style/css/colors.css" />
<link rel="stylesheet" type="text/css" href="style/css/global.css" />
<link rel="stylesheet" type="text/css" href="style/css/icons.css" />

вывод, который я хочу получить, будет список всех совпадений во входном файле через запятую или через пробел:

style/css/colors.css,style/css/global.css,style/css/icons.css

Я думаю, что получил правильное выражение: href = "([^"] *) "

но я понятия не имею, как это сделать. sed будет выполнять поиск / замену, что не совсем то, что я хочу. Наоборот, мне нужно только сохранять спички и выбрасывать остальные, а не заменять их

1 Ответ

7 голосов
/ 26 июля 2011
grep href page.html | sed 's/^.*href="\([^"]*\)".*$/\1/' | xargs | sed 's/ /,/g'

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

...