Как получить строку за строкой из файла и вырезать строку перед # в bash - PullRequest
0 голосов
/ 02 октября 2018

У меня есть файл и его содержимое:

gnome-tweak-tool #(Cinnamon does not support)
gnome-system-monitor
gnome-calculator
gedit
nomacs gimp #(viewer and editor for image)
#aa
#bb

После слияния с командой "pacman".Я хочу вывод как:

pacman -S gnome-tweak-tool 
pacman -S gnome-system-monitor
pacman -S gnome-calculator
pacman -S gedit
pacman -S nomacs gimp

Кто-нибудь мне помогает?Спасибо!

Ответы [ 6 ]

0 голосов
/ 04 октября 2018
pacman -Qqen > pkglist.txt

Для установки:

pacman -S - < pkglist.txt

Из ArchWiki: https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#List_of_installed_packages

0 голосов
/ 02 октября 2018

sed только:

sed -n 's/#.*//; /./ s/^/pacman -S /p' inputfile

Объяснение:
sed -n Не печатать, если не указано
s/#.*// Удалить все из '#'
/./ ... /p Толькопечатать строки, по крайней мере слева от символа
s/^/pacman -S / Вставить "pacman -S" в начале строки

0 голосов
/ 02 октября 2018

Сначала удалите все строки, начинающиеся с #

 sed 's/#.*//g;/^$/d' file1.txt > tmp.txt

Теперь concat pacman -S перед каждой строкой

awk '{print "pacman -S " $0;}' tmp.txt > file1.txt

Надеюсь, это поможет вам

0 голосов
/ 02 октября 2018

Попробуйте это

sed -e 's/#.*$//' test.in | awk '{if (NF != 0) {printf("pacman -S %s\n", $0)} else {print $0}}'

Надеюсь, это поможет

0 голосов
/ 02 октября 2018

Этот awk one-liner сделает работу:

awk -F'#.*' '$1&&$0="pacman -S "$1' file

Обратите внимание, что pacman принимает несколько пакетов, например:

pacman -S package1 package2 package3...
0 голосов
/ 02 октября 2018

Попробуй это.Это выведет на стандартный вывод:

awk -F# '{print $1}' file | awk 'NF' | sed -e 's/^/pacman -S /'

Это выведет на новый файл:

awk -F# '{print $1}' file | awk 'NF' | sed -e 's/^/pacman -S /' > file2
...