цикл оболочки соответствует регулярному выражению в текущей строке - PullRequest
0 голосов
/ 26 января 2012

Я пытаюсь создать скрипт для исправления CSV-файла следующим образом:

field_one,field_two,field_three
,field_two,field_three

Поэтому мне нужно проверить внутри цикла, если в текущей строке отсутствует field_one, и заменить его на sed с помощьюновое значение для field_one (перезаписать строку, пропущенную field_one).

Для этого у меня есть цикл, но мне нужна помощь с определением, отсутствует ли строка в первом поле или нет.Я, вероятно, должен использовать grep?но как использовать его в цикле и получить ответ?

while read -r line; do  
    # this is pseudocode:
    # if $line matches regex then
         #  sed 's/,/newfieldone/'
         #  overwrite the corrected line in the file
    # end if
done < my_file

Заранее большое спасибо за вашу помощь !!!!

Ответы [ 11 ]

0 голосов
/ 28 января 2012

Как насчет использования только bash

while IFS=\, read field_one field_two rest_of_line
  echo "${field_one:-default_field_one_value},$field_two,$rest_of_line"
doen < my_file > my_corecct_file

, где 'default_field_one_value' используется, если 'field_one' пуст

...