2013-11-15 1 views
0

Я хочу удалить файл, если это третий столбец содержит строку «BMR», строка может быть - «BMR13234», означает «BMR» - это статическая часть этой строки, в которой могут быть любые другие символы.найти, если конкретный столбец имеет определенную строку и удалить столбец, если эта строка присутствует.

Итак, если в третьем столбце содержится «BMR *» (* относится к любым символам), тогда весь третий столбец должен быть удален из файла.

Например: Вход:

"ABC","0.20","BMR1234442","2001-01-01" 
"LMN","0.00","BMR2490289","2008-01-01" 
"LTD","0.20","BMR2345577","2001-01-01" 

Вывод должен быть: (только если BMR присутствует еще 3-й столбец не удаляются)

"ABC","0.20","2001-01-01" 
"LMN","0.00","2008-01-01" 
"LTD","0.20","2001-01-01" 

Просьба предложить.

+1

Так что, если 'BMR' в * любой * третий столбец строки, он должен быть удален из всего файла? – fedorqui

ответ

0

Один awk решение

awk -F, '$3~/^BMR/ {$3=x} {sub(/,,/,",")}1' OFS=, file 
"ABC","0.20","2001-01-01" 
"LMN","0.00","2008-01-01" 
"LTD","0.20","2001-01-01" 

испытания, если поле 3 начиная с BMR, если да, то установите его пустым.
Sub удаляет лишнее пустое поле, если это то, что необходимо.

0
sed 's/^\(\("[^"]*",\)\{2\}\)"BMR[^"]*",/\1/' YourFile 

Просто гарантировать, что структура "blaba","blabla","BMR не включает в себя пространство между ","

Смежные вопросы