现在有一批文件, 需要检测文件末尾, 如果末尾是换行符('\n'), 就把那个换行符删除.
为了实现这个目的, 怎样做最方便?
为了实现这个目的, 怎样做最方便?

1 Muninn Mar 27, 2012 ue之类的编辑器替换 甚至word都能替换 |
2 RustingSword Mar 27, 2012 sed |
3 gujiaxi Mar 27, 2012 sed |
4 013231 OP @gujiaxi @RustingSword sed应该怎么做? 就算没有换行符, sed输出一行时也会加上一个换行符. 如何禁止sed自动添加换行符? |
5 013231 OP @yuhuofeihe @Muninn 我需要一个自动化的解决方案. |
6 66450146 Mar 27, 2012 |
8 Muninn Mar 27, 2012 汗...我还没见过到研究sed层次的人不会做这个... |
9 chone Mar 27, 2012 不用sed其他任意一种可以用正则的方式总行吧。 |
10 yuhuofeihe Mar 27, 2012 首选word~ |
11 lackrp Mar 27, 2012 cat <filename> | perl -pe 'chop if eof' |
12 why Mar 27, 2012 正则表达式 |
13 013231 OP |
15 Muninn Mar 27, 2012 Perl那个的确够简洁 vi是可以实现的,但是稍微麻烦,需要预先知道有多少行 vi里J可以合并下一行 有多少行就用一个数字跟上J就可以了 哎呀我晕了 vi不用那么麻烦 明明:%s/\n//g 就搞定了 sed也是可以的 这个我以前用过 sed ':a N;s/\n//g;ta' 最简单的貌似是tr啊 tr -d '\n' |
16 013231 OP @Muninn 我的需求是: 如果文件的**最后一个**字符是'\n', 那么删除它. 不是删除文本中的全部'\n'. 在vim中使用s/\n//是无法删除**最后一行**的'\n'的. sed中用N指令读取多行再替换'\n'同样无法解决**最后一行**的'\n'问题. |
17 anuxs Mar 27, 2012 有一批文件? 写个脚本,把所有行串成一串字符就行了。跳出常规思维吧,别想着“去掉”,同志们。 |
18 013231 OP |
19 Muninn Mar 27, 2012 抱歉 看错了. |
20 Muninn Mar 27, 2012 vi的话 G k J x 可以... 不然想要判断出文件末尾的属性,我估计只能用python和perl了 |
21 lululau Mar 27, 2012 如果知道下一步怎么做的话,这样“gawk -v ORS='' 1 filename”做是最简单的 这个方式“find dir -exec perl -pe -i 's#\n$##' {} \;” 是完整的命令 |
22 david_lee_cn Mar 27, 2012 via iPad |
23 powerx1202 Mar 27, 2012 \n$ 匹配最后的换行 |
24 powerx1202 Mar 27, 2012 没看清楚,sorry。。 |
25 lululau Mar 27, 2012 我就不信一行命令还搞不定了 :) 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' \; |
26 lululau Mar 27, 2012 判断最后一个字符是否是换行符,不知道有没有更好的方法。。。 |
27 RustingSword Mar 27, 2012 嗯,我想得也太简单了,昨天试了几次,效果都不怎么好…… |
28 kojp Mar 28, 2012 好吧,我用python小试一下~~~ |
29 kojp Mar 28, 2012 交作业~~~求拍砖 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 |
30 skywinger Mar 28, 2012 很简单的啊,在mac osx 或是linux的命令行环境下输入: dos2unix ...(文件名称) |
32 erabbit Feb 13, 2020 Javascript: a.replace(/\n$/,'') |