Use \b
ou \s
e ^
\b
para corresponder aos limites das palavras e ^
para corresponder ao início de uma linha:
sed -i '/^test\b/d' file.txt
Em vez de \b
, considere \s
para corresponder a um caractere de espaço se suas colunas forem delimitadas por espaço em branco.
É sed
adequado?
Sim.
O que se segue é uma breve menção de (a maioria dos) "outros suspeitos usuais" no processamento de texto em linha de comando:
Alternativamente, às vezes eu uso grep
para propósitos similares, especialmente se eu simplesmente quiser trabalhar em uma cópia do arquivo, redirecionar a saída ou transmitir a saída para outro utilitário:
grep -v '^test\b' file.txt
ou usando a correspondência de palavras -w
:
grep -vw '^test' file.txt
Ambas as saídas:
ID VALUE
testing value_2
first value_3
second value_4
Existem muitas outras opções mais poderosas disponíveis quando você entra nas linguagens de script de nível superior. awk
é uma boa escolha intermediária e é bom para lidar com entradas tabulares como esta:
awk 'NR > 1 && $1 != "test" { print $1,":",$2 }' test.txt
NR > 1
ignora a primeira linha (cabeçalho) e $1 != "test"
usa uma comparação de cadeia simples em vez de uma expressão regular (embora você possa usar equivalentemente !/^test /
). O bloco { print ... }
imprime as primeiras e segundas colunas separadas por dois pontos (arbitrário, apenas para mostrar um pouco do que é possível):
testing : value_2
first : value_3
second : value_4
então awk
é uma boa ferramenta para aprender. Depois disso, você está no reino das linguagens de programação completas, como Perl, Python, etc. Elas podem ser usadas para one-liners ou suítes de software gigantescas.