Eu tenho um arquivo de texto contendo a linha:
[...]
GFX Clocks and Power:
800 MHz (MCLK)
26 MHz (SCLK)
[...]
Eu quero extrair a 800 MHz
parte dele (o valor não é constante), então quero remover \t
e (MCLK)
usar sed
.
Este é o comando que tenho agora:
$ cat ~/test.txt | grep "(MCLK)" | xargs -0 sed -i -e $'s/\t//g' -e 's/\(MCLK\)//g'
Ao executar, ele retorna:
sed: can't read 800 MHz (MCLK)
: No such file or directory
Não parece ser um erro de nova linha e o problema de \t
ser um caractere não padrão para sed
(cf. Simples substituição sed de guias falhando misteriosamente ) deve ser corrigido.
Qual poderia ser o problema?
Se você tem
pgrep
:Talvez algo como possa ajudar:
Tente isso,
/(MCLK)/
irá procurar a palavra-chave.s/(MCLK)//g
vai remover(MCLK)
.s/\t//
irá remover a guia.você pode usar
-i
a opção para fazer edição inline.Para sua pergunta editada,
xargs
pega sua entrada e a transforma em argumentos do comando dado.grep
retorna a linha em que você está interessado exargs
adiciona essa linha como um argumento aosed
comando que espera um nome de arquivo. Você não precisaxargs
de jeito nenhum.Você pode dizer
sed
para agir apenas em uma linha que corresponda a um padrão:Tentei com o comando abaixo e funcionou bem também
comando
resultado