Eu tenho um arquivo que contém as seguintes linhas:
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Como posso remover a linha “SUKsoft:”?
Esta linha pode estar em qualquer lugar do arquivo (começando como está agora ou no meio).
Existe um comando para fazer isso?
Responder1
Pararemovero uso da linha
sed -i '/SUKsoft:\s*$/d' your_file
Exemplo
% cat foo
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% sed -i '/SUKsoft:\s*$/d' foo
% cat foo
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Responder2
Aqui estão as etapas para remover a linha desejada:
$ sed 's/SUKsoft: *$//' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Presumo que file.txt
contenha as linhas.
Ou,
$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
não deixa nenhumem brancolinha.
Para editar o arquivo que você pode usar,
sed -i 's/SUKsoft: *$//' file.txt
ou
sed -i 's/SUKsoft: *$//; /^$/d' file.txt
conforme sua necessidade.
VerABresposta de onde isso é feito de maneira mais compacta. Graças aCuringa.
Responder3
grep
procura por linhas que satisfaçam um padrão. grep -v
descartalinhas que satisfazem um padrão.
grep -v '^SUKsoft: *$'
O padrão é: linhas que começam ( ^
) com SUKsoft:
, possivelmente seguidas de espaços, mas nada mais até o final da linha ( $
).
Responder4
A julgar pelo seupost't fonte brutanão há espaço ou sequência de espaços após "SUKsoft:", no entanto, apenas por segurança, este comando cuidará deles, se estiverem presentes.
Usando Perl:
perl -ne '!/^SUKsoft: *$/&&print' input
!/^SUKsoft:$/&&print
: se a linha atual não corresponder ao padrão^SUKsoft: *$
, que corresponde a uma linha começando comSUKsoft:
string seguida de zero ou mais espaços, imprime a linha;
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW