поиск и замена в файле примера - PullRequest
0 голосов
/ 02 февраля 2012

Привет, у меня есть следующий файл

      <strong>Ramandand Sagar Krishna part 34</strong> Vasudev comes back 
and girl disappears from Kansa's hand and the first temple she instructs Devs to make at Vindhyachal <a href="http://www.dailymotion.com/embed/video/x3p3gu?
width=320&#038;theme=none&#038;wmode=transparent">http://www.dailymotion.com/embed/video/x3p3gu?width=320&#038;theme=none&#038;wmode=transparent</a> <a 
href="http://www.dailymotion.com/video/x3p3gu_krishna-part-34_shortfilms" 
target="_blank">Krishna Part 34</a> <strong>Ramandand Sagar Krishna part 35</strong> Celebrations at Yashoda's house and Vasudev Devki freed from jail <a href="http://www.dailymotion.com/embed/video/x3p3sg?width=320&#038;theme=none&#038;wmode=transparent">
http://www.dailymotion.com/embed/video/x3p3sg?width=320&#038;theme=none&#038;wmode=transparent</a> <a href="http://www.dailymotion.com/video/x3p3sg_krishna-part-35_shortfilms" target="_blank">Krishna Part 35</a> <a href="http://www.dailymotion.com/video/x66a71_krishna-143_shortfilms" target="_blank">Krishna 143</a></em></div>

В приведенном выше файле я хочу заменить

любой HTML-код следующего вида

<a href="http://www.dailymotion.com/embed/video/x5ftx3?width=320">http://www.dailymotion.com/embed/video/x5ftx3?width=320</a>

ключевым словом является любой HTML-тег, имеющий wmode=transparent или width=320, который должен быть заменен пробелом. Есть простой способ сделать это? <a href=""> </a>, которые не имеют wmode=transparent в своих строках. Размещенный выше файл очень очень большой, в HTML есть примерно 30 тыс. Строк, поэтому я разместил только соответствующие строки. Я нахожусь в системе Ubuntu.

Ответы [ 2 ]

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

Как указал Сорпигал, простого решения для этого не существует.Если ты хочешь уничтожить твои концовки, ты можешь попробовать мою отвратительную смесь.Это может помочь вам:

cat file.txt | tr -d "\n" | awk '{ for (i=1; i<=NF; i++) if ($i !~ /wmode=transparent|width=320/) printf "%s ", $i} END {print ""}' file.txt | sed -e "s%<a <a%<a%g"

Вывод:

<strong>Ramandand Sagar Krishna part 34</strong> Vasudev comes back and girl disappears from Kansa's hand and the first temple she instructs Devs to make at Vindhyachal <a href="http://www.dailymotion.com/embed/video/x3p3gu? <a href="http://www.dailymotion.com/video/x3p3gu_krishna-part-34_shortfilms" target="_blank">Krishna Part 34</a> <strong>Ramandand Sagar Krishna part 35</strong> Celebrations at Yashoda's house and Vasudev Devki freed from jail <a href="http://www.dailymotion.com/video/x3p3sg_krishna-part-35_shortfilms" target="_blank">Krishna Part 35</a> <a href="http://www.dailymotion.com/video/x66a71_krishna-143_shortfilms" target="_blank">Krishna 143</a></em></div>

Я уверен, что этот однострочный можно улучшитьпуть.Если вы найдете это полезным, вы можете разделить вывод на границе, чтобы привести в порядок вещи.Sed может быть хорошо для этого.

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

здесь есть ссылка , где вы можете найти ответ на свой вопрос.

в вашем случае вам нужно создать файл сценария для sed, например

с / = прозрачный Режим окна // гs / width = 320 // g

и работает что-то вроде этого:

sed -f replace_file in.txt> out.txt

я надеюсь, что это полезно для вас.

хорошего дня

...