Можно использовать grep's -v
(инвертируйте соответствие), режим, чтобы сделать это:
grep -v '^$' old-file.csv > new-file.csv
Обратите внимание, что это должны быть различные файлы, из-за того, как оболочка перенаправляет работу. Выходной файл открыт (и освобожден), прежде чем входной файл будет считан. Если у Вас есть moreutils (не по умолчанию на Mac OS X), можно использовать sponge
работать вокруг этого:
grep -v '^$' file.csv | sponge file.csv
Но конечно, затем Вам приходится тяжелее, возвращаясь, если что-то идет не так, как надо.
Если Вы, "пустые строки" на самом деле могут содержать пробелы (это кажется, что они делают), то можно использовать это вместо этого:
egrep -v '^[[:space:]]*$' old-file.csv > new-file.csv
Это проигнорирует пустые строки, а также строки, содержащие только пробел. Можно, конечно, сделать то же sponge
преобразование на нем.
Я предложил бы войти ls -il | egrep "^[0-9]+ d"
получить индекс xxxxxxxx
(первое поле вывода) плохо именованного каталога, сопровождаемого чем-то как find . -maxdepth 1 -inum xxxxxxxx -exec /bin/mv {} NewDirectoryName \;
изменить имя каталога на что-то, что не вызовет проблемы в будущем.
cd $(find . -maxdepth 1 -inum xxxxxxxx)
Но было бы хорошо устранить входную проблему вместо того, чтобы найти обходные решения. – 02.11.2013, 13:28