现在有一批文件, 需要检测文件末尾, 如果末尾是换行符('\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$/,'') |