Вы хотите заменить их чем-нибудь или полностью удалить их? В любом случае, это можно сделать с помощью sed
. Для удаления:
sed -i -e '/^,\+$/ D' yourfile1.csv yourfile2.csv ...
Для замены: ну, видите ответ wnoise, либо, если вы не хотите, чтобы создать новые файлы с выходом,
sed -i -e '/^,\+$/ s//replacement/' yourfile1.csv yourfile2.csv ...
или
sed -i -e '/^,\+$/ c\
replacement' yourfile1.csv yourfile2.csv ...
(который должен вводиться точно так же, как есть, включая разрыв строки). Конечно, вы также можете сделать это с awk
или perl
или, если вы только удалить линии, даже grep
:
egrep -v '^,+$' <oldfile.csv> newfile.csv
Я проверил их, чтобы убедиться, что они работают, но я бы посоветовал вам сделать то же самое, прежде чем использовать их (на всякий случай). Вы можете опустить параметр -i
от sed
, и в этом случае он распечатает результаты (вместо того, чтобы записывать их обратно в файл), или опустите перенаправление вывода >newfile.csv
от grep
.
EDIT: Было отмечено в комментарии, что некоторые особенности этих sed
команд работают только на GNU sed
. Насколько я могу судить, это опция -i
(которая может быть заменена перенаправлением оболочки, sed ... <infile >outfile
) и модификатором \+
(который может быть заменен на \{1,\}
).
O.M.G! Убей это старое! Это заставляет меня чувствовать себя ooolllldddd. :-) –
не удаляет линию ... см. Дэвид для лучшего использования sed – orip
Он попросил заменить, а не удалить, когда я ответил. – wnoise