Я говорю об энергии, это не будет работать в vi. Знайте об этом.
Что относительно
:%v/^[^0-9]/d
удалить все строки в буфере, которые запускаются с числа.
ggVG
выделить все строки
:w ! paste -d ' ' -s
и после этого
u
вернуться к начальной точке
Да, awk
подходящий выбор:
awk 'NF{t=$1;gsub("["$2"]","",t);print$0,t}' input
В случае, если второе поле может содержать символы с особым значением в классах символов регулярного выражения, их нужно оставить. Решение этого в POSIX awk
длинно, таким образом, я отправляю GNU awk
альтернатива только:
gawk 'NF{print$0,gensub("["gensub(/([\[\]^-])/,"\\\\\\1","g",$2)"]","","g",$1)}' input
Решение Manatworks прекрасно, конечно. Это - просто чистая альтернатива удара.
while read line
do
in=${line/ */}
pat=${line/* /}
echo $line ${in/$pat}
done < aba.dat
ab a b
cd d c
efg ef g
in
замена (/
) от $line, что такое пробел, сопровождаемый чем-то - не в regex, но стиле globbing. pat
это - противоположное: удалите то, что перед пробелом. Удаление, потому что сменная деталь $ {src/pattern/replacement} является пробелом. pat
в in
ни с чем. Стандартный var должен быть отмечен как переменная $
в отличие от первой переменной/части (в). while read -r in pat; do echo "$in $pat ${in/$pat}"; done
– Gilles 'SO- stop being evil'
13.06.2012, 01:28