Grep
如何正確重定向標準輸出以將不帶註釋的文件傳遞給 pacman 輸入
我有一個包含以下內容的簡單文件:
# programming python python-pip perl # web firefox firefox-i18n-es-es
此範例的文件名將是
file
. 我通常使用這些包含pacman
. 以這樣的方式,我將它傳遞給命令:
pacman -Sy --noconfirm $(<file)
我通常不在此文件中使用註釋,但我開始看到對它們的需求。沒有註釋 (
#
) 可以正常工作,但使用它們將它們提取為要安裝的包:$ pacman -S $(<file) [sudo] password for user: error: no se ha encontrado el paquete: # error: no se ha encontrado el paquete: programming advertencia: python-3.9.1-2 está actualizado -- reinstalándolo advertencia: python-pip-20.3.1-1 está actualizado -- reinstalándolo advertencia: perl-5.32.1-1 está actualizado -- reinstalándolo error: no se ha encontrado el paquete: # error: no se ha encontrado el paquete: web advertencia: firefox-85.0.2-1 está actualizado -- reinstalándolo advertencia: firefox-i18n-es-es-85.0.2-1 está actualizado -- reinstalándolo
我試圖在
stdout
沒有註釋行的情況下進行操作:$ cat file | grep -v '^#' python python-pip perl firefox firefox-i18n-es-es
但我不知道如何結合一切:
$ pacman -S $(< $(cat file | grep -v '^#')) -bash: $(cat file | grep -v '^#'): redireccionamiento ambiguo (ambiguous redirection) error: no se especificaron objetivos (use -h para ayuda)
我怎麼能把它結合起來?
pacman -S $(grep -v '^#' file)
這假設對
pacman -S $(<file)
沒有註釋的文件執行您想要的操作,例如使用printf
而不是pacman
:$ printf '<%s>\n' $(<file) <#> <programming> <python> <python-pip> <perl> <#> <web> <firefox> <firefox-i18n-es-es> $ printf '<%s>\n' $(grep -v '^#' file) <python> <python-pip> <perl> <firefox> <firefox-i18n-es-es>
xargs
可以幫助你:grep -v "^#" file.txt | xargs -I{} apt search --names-only {}
注意我使用
apt
,但你可以用pacman
.