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

转载 2013年12月03日 19:43:59


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}

 

使用while和read读取文件内容到shell脚本

最近公司搭了一个ftp,对一些目录做了权限,为了高效,所以写了这么一个脚本。 可以看到,上面那个脚本只能创建单个用户,但是现在需要创建多个ftp用户,为了避免一个一个手动...
  • Is_sunny
  • Is_sunny
  • 2015年12月03日 10:50
  • 4213

shell 中while read语句总结

read 参数使用 要求在屏幕上显示/etc/passwd里面的内容,具体要求如下 1、/etc/passwd每一行字段分7部分,中间用:隔开,要求每一部分线性一个一个显示 2、每一行只显示字段...
  • suofeng1234
  • suofeng1234
  • 2016年06月30日 14:32
  • 11089

[shell] while read line 与for循环的区别

while read line 与for循环的区别 ---转载整理 while read line 是一次性将文件信息读入并赋值给变量line ,while中使用重定向机制,文件中的所有信息都被读入并...
  • u014675548
  • u014675548
  • 2015年06月03日 19:16
  • 13025

while read line - [linux学习]

循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while read line do        … done 刚开始看到这种结构时,很难理解 对循环重定向的输入可适用于...
  • roler_
  • roler_
  • 2013年12月23日 14:11
  • 17324

dos2unix将windows下的换行符转换为unix的换行符

很多时候开发的时候需要用到双系统环境,即:程序是在windows下进行开发的,但是却是在Linux下运行的。这样的话很容易碰到运行时无法识别windows下的一些标点符号,可以使用dos2unix进行...
  • leedaning
  • leedaning
  • 2015年07月22日 16:38
  • 905

Linux中显示一个文件最后几行的命令是什么?

tail -n 20 filename 说明:显示filename最后20行。 Linux下tail命令的使用方法。 linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常...
  • luo200618
  • luo200618
  • 2016年09月12日 09:17
  • 3672

Linux下错误:文本文件每一行最后多了 ^M

一、现象 vim test.h如下: 二、原因       windows、linux的换行符不同。       test.h 在windows编辑的,转到linux会出现该问题。  ...
  • kanguolaikanguolaik
  • kanguolaikanguolaik
  • 2013年10月22日 15:53
  • 1033

常见linux问题解决办法和ubuntu使用中遇到问题

严正声明:   在linux下面使用命令行操作时,一定要懂得命令行的意思,然后再执行,要不然在不知道接下来会发生什么的情况下输入一通命令,linux很有可能崩掉。   因为在linux下面,使用s...
  • vicdd
  • vicdd
  • 2016年09月23日 17:03
  • 1401

读取文件最后一行数据

使用RandomAccessFile , 从后找最后一行数据public static String readLastLine(File file) throws IOException { ...
  • wowSpark
  • wowSpark
  • 2015年12月15日 10:57
  • 201

java快速读取文本文件最后一行数据内容

public static void main(String[] args) throws Exception { File file = new File("E:/a.txt"); // 1...
  • xuweilinjijis
  • xuweilinjijis
  • 2013年03月19日 14:00
  • 3969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下的格式问题,与读取不了最后一行
举报原因:
原因补充:

(最多只允许输入30个字)