关闭

linux下的格式问题,与读取不了最后一行

1144人阅读 评论(0) 收藏 举报
分类:


vim中显示windows或者dos的换行符^M

http://blog.chinaunix.net/uid-14214482-id-3220695.html

 

linux下,如果需要在vim中查看^M,需要使用如下命令:e ++ff=unix %

 

有时候,我们在 Linux 中打开曾在 Win 中编辑过的文件时,会在行尾看到 ^M字符。虽然,这并不影响什么,但心里面还是有点不痛快。如果想要删除这些 ^M 字符,可以使用 Vim 来轻松搞定它。

Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。

^M 注意要用 Ctrl + V Ctrl + M 来输入

Linuxwindows下回车换行格式转换回车换行结尾转换  

http://rocolex.blog.163.com/blog/static/6844641020115241629669/

 

一、windows的文件到linux下的转换方法:

1. sed命令替换

sed -e 's/^M//g' original.txt > target.txt (注意^M Linux/Unix下是这样输入的:先按CTRL+v,接着按CTRL+SHIFT+m,呵呵~~ 其实俺主要就是为了记录一下这个输入方法)

2. vi中替换

:%s/^M//g
3.sed
命令替换
sed -e 's/.$//' dos.txt > linux.txt

二、Linux文本传到windows系统,转换方法:
sed -e 's/$/\r/' 1pnet.txt >dos.txt

 

 

while read的关于读取最后一行的问题

 

http://bbs.csdn.net/topics/390108418

 

windows使用\r\n作为行结尾,而unix使用\n作为行结尾

使用notepad编辑的文件,如果最后一行没有回车,采用二进制方式上传到unix后,因为最后一行没有\n,会被认为是不完整的文件

循环读到最后一行后,认为达到文件结尾,那个read SERVER会返回假,循环结束。


1
、最好使用dos2unix命令转换为unix格式
2
、实在不行,只能在while循环之后,再添加一个额外处理

 

[shell] while read line最后一行读不出  

http://wangjunle23.blog.163.com/blog/static/11783817120135254317901/

 

如果存在一个文本${file},使用while read line去读取时发现,最后一行无法读出:

 

        while read line
        do
            echo "$line 1 n"
        done < ${file}

 

如何解决这种情况呢,可以考虑以下的方法:

    DONE=false
    until $DONE 

    do read || DONE=true
        echo "$REPLY 1 n"
    done < ${files}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54954次
    • 积分:819
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:32篇
    • 译文:0篇
    • 评论:1条
    文章分类