FireFox 3 стар и арестован, я недавно боролся с ним в сайте, переписывают. Существует довольно много вещей HTML5/CSS3, которые полностью или правильно не реализованы. FB реализует ультрасовременные веб-технологии, такие как HTML5 и CSS3.
Я рекомендую создать из источника для получения ближе к версии около 10.0 или лучше.
Принятие Вас никогда не будет иметь больше чем одного @
символ,
sed 's/_.*@/@/' file.txt
... должен работать.
Не уверенный то, что Вы действительно делаете с этим, но Вашим, могло сделать это как так с sed
:
$ sed 's/\(case\).*\(@test.com\)/\1\2/' 87529.txt
case@test.com
case@test.com
case@test.com
Это эффективно обрезает все между case
и @
.
Можно сделать что-то похожее с awk
:
$ awk -F@ '{split($1,a,"_"); print a[1]"@"$2}' 87529.txt
Также может быть, покончили perl
(подобный подходу evilsoup):
$ perl -p -e 's/_.*@/@/g' 87529.txt
Или можно использовать perl
предварительное средство:
$ perl -p -e 's/_.*(?=@)//g' 87529.txt
Примечание: Предвидение и lookbehind's в perl
позвольте Вам включать строки в regex шаблон, которому Вы соответствуете на, не имея их быть включенными в операцию, которая будет выполнена против regex. Думайте о них как о динамических версиях каре (^
) - начало строки и доллар ($
) - конец строки. Это немного меньше hacky, затем имеющий необходимость добавить @
въезжайте задним ходом после удаления его.
Если Ваша оболочка поддерживает расширение параметра, можно сделать что-то как
while read line; do
printf "%s\n" "${line%%_*}@${line#*@}"
done < your_file_here
Расширение ${line%%_*}
удаляет крайнее левое _
и все после него, в то время как расширение ${line#*@}
удаляет крайнее левое @
и все предшествующее ему.
read
с -r
и без установки IFS), контроль
– Stéphane Chazelas
22.08.2013, 23:01
Если строки могут содержать больше чем один @
:
sed 's/^\([^@_]*\)_[^@]*@/\1@/'
Или:
awk -F@ -vOFS=@ 'NF >= 2 {sub(/_.*/,"",$1)};1'
Evilsoup решение кажется, прекрасен!
Еще одно решение с помощью обоих sed
и awk
.
sed 's/_/ /g; s/@/ /g' file_name | awk '{ print $1"@"$NF '}
Это точно не значило бы эффективность, но может быть просто понять, возможно, когда каждый не хочет смешивать с регулярными выражениями. Вышеупомянутый код делает следующее:
sed
замены "_" с пробелом.sed
замены с пробелом. Так, теперь мы содержание файла, разделенного на несколько столбцов:случай test.com
случай 1_2 test.com
случай 1 test.com
awk
просто печатает первые и последние столбцы разделенного содержания. Здесь, NF
специальный символ в awk
это дает количество полей подряд.Вот другой gawk
путь:
gawk -F_ '{if(NF>1){print $1$NF} else {print $NF}}'
Используя _
как разделитель полей, говорим мы gawk
распечатать первые и последние поля, если существует больше чем одно поле и последнее поле, если существует только единственное поле.