Использование awk для удаления нежелательного текста из файла CSV

У меня есть такой CSV-файл:

SUPPORT 07/30/2008-10:59:54 Eastern Daylight Time
123     07/03/2009-08:56:42 Eastern Daylight Time
DC321   07/10/2009-20:16:56 Eastern Daylight Time

где дата представляет собой целый столбец. как я могу удалить всю часть строки «Восточное летнее время» с помощью awk?


person Community    schedule 05.08.2009    source источник


Ответы (4)


Основываясь на вашем комментарии в ответе piotrsz, вот как вы можете удалить часть EDT:

awk '{gsub("Eastern Daylight Time", "");print}' file.csv
person Nick Presta    schedule 05.08.2009
comment
Похоже на то. Я только что попросил DCrawmer заменить запятые в данных, чтобы быть уверенным. - person Pinochle; 05.08.2009

Я не знаю awk, но версия sed была бы

sed "s/ Eastern Daylight Time//" file.csv
person David Sykes    schedule 05.08.2009
comment
Это соответствует моему общему правилу: сначала пробовать sed, затем awk, а затем полностью скомпилированный язык. - person T.E.D.; 05.08.2009

Итак, вы хотите только 1-й и 2-й столбец? Если да

awk '{print $1"\t"$2}' file.csv
person piotrsz    schedule 05.08.2009
comment
на самом деле, дата находится в одном столбце. в файле всего два столбца, поэтому мне нужно отфильтровать этот второй столбец. - person ; 05.08.2009
comment
Если это CSV, разделенный запятыми, вы, вероятно, хотите $1, $2, но да. +1. - person Nick Presta; 05.08.2009

используя только оболочку

while read -r line
do
    case "$line" in
        *Eastern* )
            echo "${line%%Eastern*}"
            ;;
        *) echo "${line}"
    esac
done < "file"
person ghostdog74    schedule 28.11.2009