我有一个逗号分隔的.csv文件,如下所示:
header1,header2,header3
value10,value20,value30
value11,value21,value31
,,
,,
,,
如何删除csv末尾的“空行”?空行的数量并不总是相同,但可以是任何数字。
如何将修改后的csv保存到新文件中?
我有一个逗号分隔的.csv文件,如下所示:
header1,header2,header3
value10,value20,value30
value11,value21,value31
[empty line]
[empty line]
[empty line]
如何删除csv末尾的“空行”?空行的数量并不总是相同,但可以是任何数字。
如何将修改后的csv保存到新文件中?
答案 0 :(得分:1)
这取决于你对空行的定义。如果它真的是为空,因为只有换行符,使用awk你可以:
IDK
或$ awk '/./' file
即,如果只有换行符(awk中默认为/^$/
),则打印出来。如果你需要外出到另一个文件:
RS
如果 empty 的定义可以容忍记录中的空格以及换行符:
$ awk '/./' file > file2
更新:A-ha,空虚的定义归结为所有逗号。 OP在评论中提到“空行”总是放在最后所以一旦我们遇到第一个空行(即除了记录中的逗号= { {1}} = $ awk '/^[^ ]+$/' file
- 抱歉双重否定),退出。
^,+
答案 1 :(得分:0)
快速而肮脏(但有效)的方法是在键盘上找到不在您文件中的字符,例如µ
。然后输入:
tr '\n' 'µ' < myfile.csv | sed -e 's/[,µ]*$//' | tr 'µ' '\n' > out.csv
没试过,但你可以根据自己的需要调整这个想法。也许您还必须在括号表达式中添加空格字符(或制表符等)。
想法是用(临时)µ
替换'end of line'字符以获得(临时)单行文件;然后使用一个非常基本的正则表达式来删除你想要的东西;最后恢复'行尾'字符。
答案 2 :(得分:0)
使用以下 -
sed -i '/^$/d' file
说明:
^$ : To search line which doesn't contain anything from start(^) to last($)
d : To delete that searched line
i : to make the changes permanent so that you don't need to redirect to another file and then rename it again.
答案 3 :(得分:0)
您的问题并不清楚,但听起来您只需要: