Bash CRLF - 文档末尾的新行
Bash CRLF - new lines at the end of document
在Whosebug和大叔Google上看了很多问题,但不知为何还是破解不了。
我有一个由 SSRS 自动导出的 CSV 文件。不幸的是,导出插件很旧,它们在文件末尾放置了两个换行符和回车 returns:
00000c0: 6b7c 3230 2d46 6562 2d31 360d 0a0d 0a k|20-Feb-16....
我尝试了很多 sed
替换,但它似乎只删除了一行。
比如简单的
sed -i '/^\s*$/d'
还尝试将 \s
替换为 [[:space:]]
(同样有效,但仅在一行中)
之后十六进制转储的最后一行如下所示:
00000c0: 6b7c 3230 2d46 6562 2d31 360d 0a k|20-Feb-16..
我试过类似的东西:
sed -i 's/\x0D\X0A//g' <file>
但是这不会替换最后的两个 0d0a
如有任何帮助,我们将不胜感激
以下命令应该适合您:
sed 's/\x0d//;/^$/d'
我要删除所有回车 return 个字符并删除空行。
试一试,像这样:
echo -e "foo\x0a\x0d\x0a" | sed 's/\x0d//;/^$/d' | xxd
00000000: 666f 6f0a foo.
"Forget about the last two lines."
# gnu!
head -n -2 foo.csv > foo.csv.new
"Oh, ed (or ex/vi/vim), kill the last two lines."
ed foo.csv << EOF
$
-1,$d
w foo.csv.new
q
EOF
# ex/vi/vim: change this to vi -c "the whole trunk".
"I love sed. And I love sed."(我没有)
sed -i -e '$d' foo.csv; sed -i -e '$d' foo.csv
"Should I kill this?"
[[ $(tail -n 2 foo.csv) == $'\r\n\r\n' ]]
"Vim, can you test for that yourself?"
# I don't write vimscript.
"PERL?"
# I don't write Perl.
在Whosebug和大叔Google上看了很多问题,但不知为何还是破解不了。
我有一个由 SSRS 自动导出的 CSV 文件。不幸的是,导出插件很旧,它们在文件末尾放置了两个换行符和回车 returns:
00000c0: 6b7c 3230 2d46 6562 2d31 360d 0a0d 0a k|20-Feb-16....
我尝试了很多 sed
替换,但它似乎只删除了一行。
比如简单的
sed -i '/^\s*$/d'
还尝试将 \s
替换为 [[:space:]]
(同样有效,但仅在一行中)
之后十六进制转储的最后一行如下所示:
00000c0: 6b7c 3230 2d46 6562 2d31 360d 0a k|20-Feb-16..
我试过类似的东西:
sed -i 's/\x0D\X0A//g' <file>
但是这不会替换最后的两个 0d0a
如有任何帮助,我们将不胜感激
以下命令应该适合您:
sed 's/\x0d//;/^$/d'
我要删除所有回车 return 个字符并删除空行。
试一试,像这样:
echo -e "foo\x0a\x0d\x0a" | sed 's/\x0d//;/^$/d' | xxd
00000000: 666f 6f0a foo.
"Forget about the last two lines."
# gnu!
head -n -2 foo.csv > foo.csv.new
"Oh, ed (or ex/vi/vim), kill the last two lines."
ed foo.csv << EOF
$
-1,$d
w foo.csv.new
q
EOF
# ex/vi/vim: change this to vi -c "the whole trunk".
"I love sed. And I love sed."(我没有)
sed -i -e '$d' foo.csv; sed -i -e '$d' foo.csv
"Should I kill this?"
[[ $(tail -n 2 foo.csv) == $'\r\n\r\n' ]]
"Vim, can you test for that yourself?"
# I don't write vimscript.
"PERL?"
# I don't write Perl.