去掉文件末尾的换行符, 怎么做最方便?

2012-03-27 00:01:24 +08:00
 013231
现在有一批文件, 需要检测文件末尾, 如果末尾是换行符('\n'), 就把那个换行符删除.
为了实现这个目的, 怎样做最方便?
14295 次点击
所在节点    问与答
32 条回复
lululau
2012-03-27 22:07:24 +08:00
如果知道下一步怎么做的话,这样“gawk -v ORS='' 1 filename”做是最简单的
这个方式“find dir -exec perl -pe -i 's#\n$##' {} \;” 是完整的命令
david_lee_cn
2012-03-27 22:47:47 +08:00
@lululau 注意看,是最后一行

@anux的思路可行。

Awk制定rfs='',读取所有行为一行,匹配$,if true, replace it, else print

明天没解贴,我试下
powerx1202
2012-03-27 23:19:42 +08:00
\n$ 匹配最后的换行
powerx1202
2012-03-27 23:31:11 +08:00
没看清楚,sorry。。
lululau
2012-03-27 23:33:14 +08:00
我就不信一行命令还搞不定了 :)

Mac:
find . -type f -exec bash -c 'tail -c 1 {} | wc -l | grep -q 1 && dd if=/dev/null of=h seek=$(($(stat -f%z {})-1)) bs=1 count=1' \;

Linux:
find . -type f -exec bash -c 'tail -c 1 {} | wc -l | grep -q 1 && dd if=/dev/null of=h seek=$(($(stat -c%s {})-1)) bs=1 count=1' \;
lululau
2012-03-27 23:38:21 +08:00
判断最后一个字符是否是换行符,不知道有没有更好的方法。。。
RustingSword
2012-03-27 23:57:16 +08:00
嗯,我想得也太简单了,昨天试了几次,效果都不怎么好……
kojp
2012-03-28 10:40:28 +08:00
好吧,我用python小试一下~~~
kojp
2012-03-28 11:07:54 +08:00
交作业~~~求拍砖

f= open("./some.txt", "r")
fstr=f.read()
newstr=fstr[len(fstr)-1:]
res=fstr[0:len(fstr)-1]+newstr.replace("\n", "nothing")#nothing can be ""
f= open("./somenew.txt", "w")
print>>f,res
skywinger
2012-03-28 11:13:36 +08:00
很简单的啊,在mac osx 或是linux的命令行环境下输入:
dos2unix ...(文件名称)
lackrp
2012-03-28 14:58:28 +08:00
@013231 写错了,不应该是chop,应该是chomp,

cat <filename> | perl -pe 'chomp if eof'
erabbit
2020-02-13 21:53:26 +08:00
javascript:
a.replace(/\n$/,'')

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/30633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX