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.