Таким образом, то, что я закончил тем, что делал в конце, находило сфокусированное окно и xkilling им следующим образом:
f.exec "xkill -id `xdpyinfo | grep focus | awk '{print $3}' | tr -d ','`"
Учитывая этот вход, Вы хотите сохранить первые и последние поля. Довольно простой с awk:
awk '{print $1, $NF}' filename
Используя sed, это заменит разграниченные слова всего пространства только для цифры:
sed ':a; s/ [[:digit:]]\+ / /; ta'
sed -e 's/[ ].*[ ]/ /' yourfile
Это проверяет крайний левый пробел и вплоть до крайнего правого пробела и заменяет его одним пробелом. IOW, первое и последнее поля сохраняются.
Предполагается, что нет начальных и / или конечных пробелов. Вкладок нет.
В противном случае мы всегда можем сделать следующее:
SPC=`echo 'x' | tr 'x' '\040'`
TAB=`echo 'x' | tr 'x' '\011'`
WS="[$TAB$SPC]"
sed -e "s/^$WS*//;s/${WS}\$//;s/${WS}.*${WS}/${SPC}/" < yourfile
$ echo "a.b.gg3d 0000000001 0000000001 y" |sed -r 's/[ ]+[0-9]+//g'
a.b.gg3d y
-r regex mode
Вы ищете один или несколько пробелов, за которыми следует одно или несколько чисел из любого диапазона от 0 до 9. Технически это совпадает дважды, оставляя третье место между a.b.gg3d и y.
Другое решение, использующее только cut
, которое выводит первый и четвертый столбцы:
cut -d' ' -f1,4 < samplefile.txt
sed 's/ [[:digit:] ]\+ / /'
может сделать это то же – enzotib 10.09.2013, 23:34sed 's/[[:space:]][[:digit:]]\+//g'
который удаляет одно или несколько чисел[[:digit:]]\+
продолженный пробелом (вкладки, пробелы)[:space:]
, и также указанный/g
к опциям, чтобы сделать это для всех случаев (и не просто первое) – Drav Sloan 10.09.2013, 23:41" 123abc"
- т.е. гарантировать, что слово было составлено только с цифрами. – glenn jackman 11.09.2013, 15:41