Linux案例之处理^M特殊字符

◆ 产生原因:

DOS (Windows 系统)使用的断行字符为 ^M$ ,我们称为 CR 与 LF 两个符号。 而在 Linux 下,则是仅有 LF ($) 这个断行符号。所以,当在 Linux 下打开Windows文件时,就会多了一个 ^M 的符号。

◆ 处理方案:
  • dos2unix 命令:
dos2unix filename
  • sed 命令:
sed -i 's/^M//g' filename

注:^M的输入方式是 Ctrl + v ,然后Ctrl + M

  • vi工具修改:
#vi filename
:1,$ s/^M//g
^M 输入方法: ctrl+V ,ctrl+M
  • tr 命令:
#cat filename |tr -d '\r' > newfile

注:^M 可用 \r 代替

### Linux 下 `sed` 命令的用法与实例 #### 什么是 `sed`? `sed` 是一种流编辑器(Stream Editor),主要用于自动化处理文本文件中的替换、删除、插入等操作。它能够高效地完成批量修改任务,而无需手动打开文件进行逐行更改。 --- #### 基本语法 `sed` 的基本语法如下所示: ```bash sed [选项] '脚本' 文件名 ``` 常见的选项包括: - `-n`:抑制默认输出,仅显示通过打印命令指定的内容。 - `-e` 或 `--expression=script`:附加脚本来执行。 - `-f script-file`:从文件读取脚本并执行。 - `-i`:直接修改原文件内容。 --- #### 实际应用案例 ##### 替换字符串 可以使用 `s/pattern/replacement/flags` 来实现字符串替换功能。例如,将文件中所有的 “old” 替换为 “new”,可运行以下命令[^1]: ```bash sed 's/old/new/g' filename.txt ``` 这里的 `/g` 表示全局替换;如果不加,则只替换每行的第一个匹配项。 ##### 删除特定行 如果想移除包含某个关键词的所有行,比如删除含有单词 “error” 的记录,可以用下面的方式: ```bash sed '/error/d' log_file.log ``` ##### 插入新行 假设要在某模式之前或者之后加入额外的信息。“a\”表示追加,“i\”代表插入。举个例子,在所有提到日期的地方后面加上注释说明[^4]: ```bash sed '/^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/a\\#Date Entry Below#' data.csv ``` ##### 执行外部 Shell 脚本 利用特殊字符 `=` 可调用其他程序来动态生成部分数据作为输入的一部分. 如下展示如何获取当前时间戳填充到文档里: ```bash sed -e "/^timestamp:/ r <(date '+%Y-%m-%d %H:%M:%S')" config.conf ``` 注意此方法依赖于 GNU 版本扩展支持. --- #### 结合 tee 使用场景 当希望同时查看屏幕上的即时反馈又保存副本至磁盘时,就可以考虑引入 `tee` 工具配合工作流程[^2] 。例如监控日志实时更新的同时持久化存档 : ```bash tail -f access_log | sed 's/\bpassword=[^&]*//' | tee sanitized_access_log & ``` 上述指令会过滤掉 URL 查询串里的密码参数以防泄露敏感资料 , 同步写入干净版本的日志档案当中 . ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值