Вот тот, который работает в обратном порядке:
xargs -I{} -n1 \
expr {}\ {} : '[^0-9]*\(.* .ed\).*'
expr
получает две копии каждой строки подряд и делится пробелом как его первый аргумент. Например:
expr 'TedBuilder20000 TedBuilder20000' : '[^0-9]*\(.* .ed\).*'
И поэтому его сопоставленные результаты - если таковые имеются - равны Зарплата
, затем Имя
:
printf %s\\n BobJanitor20000 TedBuilder30000 \
NedFighter25000 KitTeacher40000 |
xargs -I{} -n1 \
expr {}\ {} : '[^0-9]*\(.* .ed\).*'
30000 Ted
25000 Ned
Это работает, однако:
xargs sh -c <input '
for a do case $a in (?ed*) ! :; esac ||
printf %-4.3s${a##*[!0-9]}\\n "$a"
done' ''
Ted 30000
Ned 25000
Necesita PRCE para hacer eso:
grep -oP 'user="\K[^"]*' inputfile