у меня есть данные в следующем виде в файле:сохранить только содержимое указано в строке
<string1> abc:string2 <http://yago-knowledge.org/resource/wikicategory_Sports_clubs_established</text\u003e\n______<sha1\u003eqwjfowt5my8t6yuszdb88k2ehskjuh0</sha1\u003e\n____</revision\u003e\n__</page\u003e\n__<page\u003e\n____<title\u003ePortal:Tropical_cyclones/Anniversaries/August_22</title\u003e\n____<ns\u003e100</ns\u003e\n____<id\u003e7957689</id\u003e\n____<revision\u003e\n______<id\u003e446349886</id\u003e\n______<timestamp\u003e2011-08-23T17:38:19Z</timestamp\u003e\n______<contributor\u003e\n________<username\u003eLightbot</username\u003e\n________<id\u003e7178666</id\u003e\n______</contributor\u003e\n______<comment\u003eDelink_non-obscure_units._Conversions._Report_bugs_to_[[User_talk:Lightmouse>.
Разделитель в приведенном выше файле вкладка (\t
), то есть string1
отделена от abc:string2
от \t
. Аналогично для остальных строк.
Теперь я хочу сохранить только алфавиты, цифры, /
, :
, '.' и _
в строках, которые заключены в пределах <>
. Я хочу удалить все символы, кроме указанных, из строк, которые были добавлены в <>
.
Есть ли способ, которым я могу достичь этого, используя команды linux или python? Я хочу заменить все нежелательные символы символом подчеркивания.
<string1> abc:string2 <http://yago-knowledge.org/resource/wikicategory_Sports_clubs_established_text_u003e_n_______sha1_u003eqwjfowt5my8t6yuszdb88k2ehskjuh0_sha1_u003e_n_____revision_u003e_n___/page_u003e_n___page_u003e_n_____title_u003ePortal:Tropical_cyclones/Anniversaries/August_22_/title_u003e_n_____ns_u003e100_/ns_u003e_n_____id_u003e7957689_/id_u003e_n_____revision_u003e_n_______id_u003e446349886_/id_u003e_n_______timestamp_u003e2011-08-23T17:38:19Z_/timestamp_u003e_n_______contributor_u003e_n_________username_u003eLightbot_/username_u003e_n_________id_u003e7178666_/id_u003e_n_______/contributor_u003e_n_______comment_u003eDelink_non-obscure_units._Conversions._Report_bugs_to___User_talk:Lightmouse>.
Есть ли способ, которым я могу достичь этого?
В вашем вопросе было бы лучше придерживаться либо sed, либо python, поскольку это два инструмента с очень разными областями применения. Или что вы имеете в виду «из командной строки», в Linux один лайнер? В таком случае, почему бы и нет? –
Я удалил «sed» из вопроса. Я хочу сказать, есть какой-то способ в python или linux для достижения того же. Даже если это не один лайнер, это меня не имеет значения. –
Не будет ли замена «sed» с использованием выражения с отрицанием скобки в [regex] (http://linux.die.net/man/7/regex)? – rickhg12hs