Удаление пустых строк в конце CSV-файлов MS EXCEL

В моей клавиатуре уже есть эта функция. Он называется OFF ONи в нем есть крошечный переключатель. Если кошка сможет щелкнуть этим выключателем, я буду очень впечатлен!

OFF ON keyboard switch

1
10.10.2019, 10:19
3 ответа

В файлах csv -окна -будут заканчиваться строкой -. Поэтому вам нужно сначала преобразовать их в формат linux -.

dos2unix yourfileсделает это за вас.

Если у вас нет dos2unixна вашем ящике, то же самое можно сделать с помощью...

sed "s/\r//" infile >outfile         # UnxUtils sed v4.0.7 or higher
tr -d \r <infile >outfile            # GNU tr version 1.22 or higher

согласно sed1line.txt .

После преобразования файла в формат Unix -обычные командыsed-должны работать должным образом.

Следите за пробелами в пустых строках.:sed '/^\s*$/d' yourfile

Все в одном sed -команда:

sed -e 's/\r// -e /^\s*$/d' yourfile > outputfile
2
27.01.2020, 23:14

Вполне вероятно, что "пустые" строки содержат пробельные символы (возврат каретки является заметным подозреваемым в файлах, написанных программами для DOS или Windows ). Мы можем изменить шаблон, чтобы учесть эти:

sed -i -e '/^[[:space:]]*$/d' \
    "${File_Path}"*_{PROD,DEV,UAT}.csv

(Н.Б. также укажите расширение переменной!)

2
27.01.2020, 23:14

Если вы сначала объединили, а затем удалили пустые строки, это будет немного эффективнее. Вы можете сделать что-то вроде этого:

cat *_PROD.csv > MERGED_PROD.csv
dos2unix MERGED_PROD.csv
perl -i.bak -ne 'print if /\S/' MERGED_PROD.csv

Последний лайнер perl one -хранит копию оригинала MERGED_PROD.csvв MERGED_PROD.csv.bak. Вы можете заменить -i.bakтолько на -iв приведенной выше команде, чтобы пропустить резервное копирование.

2
27.01.2020, 23:14

Теги

Похожие вопросы