Групповые линии в соответствии с первым Word

Вы имеете в виду файл * .desktop? Это мой файл рабочего стола для проигрывателя vmware.

[Desktop Entry]
Encoding=UTF-8
Name=VMware Player
Comment=Run a virtual machine
Exec=/PATH/TO/bin/vmplayer %u
Terminal=false
Type=Application
Icon=vmware-player
StartupNotify=true
Categories=System;
MimeType=application/x-vmware-vm;application/x-vmware-enc-vm;x-scheme-handler/vmrc;

Вы должны указать свой собственный путь к vmplayer в поле Exec

Его путь -

/usr/share/applications/vmware-player.desktop

4
25.01.2019, 18:18
4 ответа

Вы можете сделать что-то вроде:

awk -F: 'NR>1 && $1 "" != last {print ""}; {print; last = $1}'

""для принудительного сравнения строк. Без него он не работал бы должным образом при вводе, например:

100:foo
100:bar
1e2:baz
1e2:biz

Где 100и 1e2будут сравниваться как числа.

11
27.01.2020, 20:45

Вот один из способов. Если первое поле не совпадает с полем в предыдущей строке, выведите разрыв....

$ awk -F: '$1!=a&&a{print ""}{a=$1}1' myfile
cat:persian/young-1
cat:winter/young-2
cat:summer/wild-3

dog:persian/young-1
dog:winter/young-2
dog:summer/wild-3
$

Пояснение:

  • -F:= установить разделитель полей на:
  • $1!=a&&a= если первое поле не равно переменной "a" (предыдущее первое поле ), а переменная "a" установлена ​​на что-то (т.е. мы имеем дело не с самой первой строкой в файл)
  • {print ""}= напечатать пустую строку
  • {a=$1}= для каждой прочитанной строки установить переменную "a" в первое поле
  • 1= напечатать строку
7
27.01.2020, 20:45

Я пробовал так

en ~]# awk '/cat/{print $0}' filename| sed '$s/.*/&\n/g';awk '/dog/{print $0}' filename

cat:persian/young-1
cat:winter/young-2
cat:summer/wild-3

dog:persian/young-1
dog:winter/young-2
dog:summer/wild-3
[root@praveen ~]#
1
27.01.2020, 20:45

Вы также можете нанять редактора sedдля этой работы:

$ sed -e '
   $q;N
   P
   /^\([^:]*\):.*\n\1:/!{x;p;x;}
   D
' input

cat:persian/young-1
cat:winter/young-2
cat:summer/wild-3

dog:persian/young-1
dog:winter/young-2
dog:summer/wild-3

Основная идея состоит в том, чтобы иметь 2 строки в любое время в пространстве шаблонов. Сравните строки перед начальными двоеточиями " :" в пространстве шаблонов. Если они не совпадают, значит Обнаружена смена животного, и мы сразу выводим пустую строку.

1
27.01.2020, 20:45

Теги

Похожие вопросы