
У меня есть файл .csv с несколькими строками данных. Мне нужно найти определенное значение в строке/записи и удалить эту строку.
Например:
abc.csv
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000542,eeee,ffff,gggg,hhhh
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
Мне нужно найти 1000542 и удалить всю строку, содержащую это число:
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
решение1
sed
Для удаления одной строки можно использовать :
sed -i '/1000542/d' abc.cvs
где d
удаляет строку, -i
указывает sed
на необходимость выполнения операций с файлом, а не просто вывода измененного текста, 1000542
— это шаблон, который вы хотите найти, — abc.cvs
это имя файла.
решение2
Вы также можете использовать awk,
awk '/1000542/ {next}1' infile > outfile
Пример:
$ awk '/1000542/ {next}1' file
col1_id,col2,col3,col4,col5
1000541,aaaa,bbbb,cccc,dddd
1000543,iiii,jjjj,kkkk,llll
1000544,mmmm,nnnn,oooo,pppp
Он пропускает строку, содержащую текст, 1000542
из печати.