$ grep -F ed file|fold -w 5|fold -w 3|grep -E '^[[:upper:]]..|^[0-9]'|paste -sd ' \0\n' -
Ted 30000
Ned 25000
Или:
$ cut -c 1-3,11- file | grep -F ed | fold -w 3 | paste -sd ' \0\n' -
Ted 30000
Ned 25000
Или (при условии GNU grep
):
$ grep -oE '^.{3}|.{5}$' file | paste -sd ' \n' - | grep -F ed
Ted 30000
Ned 25000
Вы также можете сделать (при условии, что оболочка с поддержкой подстановки процессов) что-то вроде:
separate() {
fold -w 1 -- "$@" |
paste -sd '\0\0 \0\0\0\0\0\0 \0\0\0\0\n' - |
sort -k 1,1
}
join <(separate file | cut -d ' ' -f 1 | grep -F ed
) <(separate file) | cut -d ' ' -f 1,3
Similar a lo que se mencionó en los comentarios, esto lo hará:
yes '<enter>'
Dará como resultado la cadena literal <enter>
, o puede usar ''
para saltos de línea.
yes ''
Bueno, si yes ''
no fuera lo suficientemente bueno (y lo es )pero solo querías presumir siendo más esotérico, siempre podrías hacer
tr \\000 \\n < /dev/zero