linux简单的文本处理

在《文件打包与解压缩》一节实验中提到 Windows/dos 与 Linux/UNIX 文本文件一些特殊字符不一致。
如断行符 Windows 为 CR+LF(\r\n),Linux/UNIX 为 LF(\n)。使用 cat -A 文本 可以看到文本中包含的不可见特殊字符。Linux 的 \n 表现出来就是一个 ,而 W i n d o w s / d o s 的表现 为 M ,而 Windows/dos 的表现为 ^M ,而Windows/dos的表现M,可以直接使用 dos2unix 和 unix2dos 工具在两种格式之间进行转换,使用 file 命令可以查看文件的具体类型。
不过现在希望你在不使用上述两个转换工具的情况下,使用前面学过的命令手动完成 dos 文本格式到 UNIX 文本格式的转换。

  1. 使用tr命令进行转换:

    tr -d '\r' < input_dos.txt > output_unix.txt
    
    • tr是一个用于字符替换或删除的命令,它的语法是tr [选项] 字符集1 字符集2。在这里,我们使用了-d选项来删除字符集1中的字符。
    • '\r'是一个表示回车符的特殊字符。在DOS文本中,每一行的结尾都是由回车符(CR,即\r)和换行符(LF,即\n)组成,而UNIX文本只使用换行符(\n)。
    • < input_dos.txt表示将输入文件input_dos.txt的内容重定向到tr命令的标准输入。也就是说,tr命令将从input_dos.txt读取数据进行处理。
    • > output_unix.txt表示将tr命令的标准输出重定向到文件output_unix.txt,因此,处理后的结果将被写入output_unix.txt。输出文件将具有UNIX文本格式,其中的回车符\r被删除了。
  2. 使用sed命令进行转换:

    sed -e 's/\r$//' < input_dos.txt > output_unix.txt
    
    • sed是一个用于处理文本流的流编辑器,它的基本工作原理是逐行读取输入文本,并根据提供的编辑指令进行处理。在这里,我们使用了替换指令。
    • -e选项表示在命令中提供编辑指令。
    • 's/\r$//'是替换指令的格式。s代表替换(substitute),\r$表示匹配行尾的回车符\r,而//表示替换为空字符串,即删除匹配到的回车符。
    • < input_dos.txt表示将输入文件input_dos.txt的内容重定向到sed命令的标准输入。sed命令将从input_dos.txt读取数据进行处理。
    • > output_unix.txt表示将sed命令的标准输出重定向到文件output_unix.txt,因此,处理后的结果将被写入output_unix.txt。输出文件将具有UNIX文本格式,其中的回车符\r被替换为空字符串,即删除了。

无论使用tr还是sed,这两个命令都可以将DOS文本格式转换为UNIX文本格式,具体取决于您更习惯使用哪种命令。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值