sed: extra characters at the end of l command及undefined label錯誤

  • 前言
  • 問題描述
  • 發生原因
  • 解決辦法
  • 參考連結

前言

筆者在MacOS下使用sed -i時出現了extra characters at the end of l command的錯誤,經過查詢,才知道sed -i在Linux和MacOS上的用法不完全一樣。

問題描述

使用以下指令替換test.txt中的字串:

echo hello > test.txt
sed -i 's/hello/good bye/' test.txt

這時會出現以下錯誤:

sed: 1: “test.txt”: undefined label ‘est.txt’

嘗試改用完整路徑:

sed -i 's/hello/good bye/' `pwd`/test.txt

這時就出現了extra characters at the end of l command的錯誤:

sed: 1: “/Users/lorenzo/test.txt”: extra characters at the end of l command

發生原因

筆者上網查詢這個錯誤發生的原因,發現是sed -i在Linux及MacOS下的用法不同所致。
sed -i這個指令會in-place(原地)修改檔案,它在兩種作業系統下都可以接受參數。
因為sed -i是原地修改檔案,通常我們會希望為原來的檔案做備份。而sed -i所接受的參數就表示該備份檔案的副檔名。

我們可以使用man sed這個指令來查看sed這個指令在兩種不同作業系統下的用法:

  • man sed in Linux

    -i[SUFFIX], --in-place[=SUFFIX]
    edit files in place (makes backup if SUFFIX supplied)

  • man sed in MacOS

    -i extension
    Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup
    will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk cor-
    ruption or partial content in situations where disk space is exhausted, etc.

我們可以看到,sed -i後面的參數在Linux下是可選的,而在MacOS下卻是必須的。

解決辦法

上述兩個問題都可以用同一個辦法解決,那就是正確地使用sed -i
在MacOS下,我們必須傳入參數。我們可以:

使用bak的副檔名備份原始檔案。

sed -i '.bak' 's/hello/good bye/' test.txt

或選擇不備份:

sed -i '' 's/hello/good bye/' test.txt

我們可以使用以下指令來查看結果:

cat test.txt #good bye

我們可以看到,test.txt裡的內容己被成功替換。

另外,如果有做備份,可以使用以下指令來查看備份檔的內容:

cat test.txt.bak #hello

參考連結

sed command hits “undefined label” error on Mac OS X
OS X + Sed: “extra characters at the end of l command” Error

sed: extra characters at the end of l command及undefined label錯誤相关推荐

  1. mac 执行sed -i指令时,总是出现extra characters at the end of command

    第一次使用mac电脑,在报表项目中,由于每个报表模板都包含有一个特定的ip数据源,数据源更换了,就得更换原有的数据.文件比较多,不想一个一个的文件修改,就想到用sed指令进行批量修改,于是执行了如下指 ...

  2. Tcl经典报错 之 extra characters after close-quote

    作为脚本语言tcl的空格使用尤为重要 经典报错之 extra characters after close-quote 错误的情况 % array set a [list "School,B ...

  3. QT 报错 error: Extra characters after test expression 。该情况下成功解决

    问题描述 pri文件中,设计到含有空格的路径名时,即使加了$$quote,在QMake的时候仍然会报错error: Extra characters after test expression 解决方 ...

  4. Qt Extra characters after test expression toolchain.prf

    Qt Creator在编译时报错:Extra characters after test expression(不是pro文件而是这个toolchain.prf) 原因:DOS的默认编码不一致造成的, ...

  5. Qt:Extra characters after test expression.

    编译环境:Ubuntu18.04 Qt5.11.2 .pro文件出现错误,提示为Extra characters after test expression. 出错原因: 在RESOURCES += ...

  6. sed: -e expression #1, char 8: unterminated `s‘ command

    使用sed命令替换指定文本中的字符串时,遇到了sed: -e expression #1, char 8: unterminated `s' command 网上查了好多,终于找到解决方案,在这里给个 ...

  7. shell expect 报错 extra characters after close-brace close-quote

    可能原因 流程控制语句中的"{" 或者 "}" 之间需要空格,但是没有空格 spawn 执行语句的变量被引号引起来了,应去掉引号 { } 不配对,语法错误 示例 ...

  8. 使用TASM时报错extra characters on line的解决办法

    多打了一个,号,将MOV AX,[BX],[SI]修改为MOV AX,[BX][SI]

  9. 汇编语言extra characters on line

    解决办法:最先检查一下代码是不是打错了,不是得话其实就是汇编语言不允许有中文状态下的空格,最后把出错的那一行代码重新打一遍

最新文章

  1. java servlet 请求_Java中前台JSP请求Servlet实例(http+Servlet)
  2. 浏览器到响应页面的全过程
  3. 青龙羊毛——某元宇宙(非原创)
  4. html:(40):块级元素和内联块级元素
  5. Python 3.x 中“HTTP Error 403: Forbidden“问题的解决方案
  6. 一位女孩对男孩的忠告(转贴)
  7. SAP BPC最佳实践-BPC安装及配置的常见问题
  8. Hadoop中Namenode单点故障
  9. excel生成多个sheet .net
  10. 淘宝客APP源码导购APP源码代理淘客APP源码
  11. 运维软件推荐(附带软件百度网盘分享)
  12. 【周博磊】强化学习纲要 一至六讲笔记
  13. 受拜登刺激的希望-华尔街股市创下历史新高,纳斯达克指数在Netflix启动未来股票回购后疯狂上涨
  14. KALI搭建个人wifi热点
  15. docke网络之bridge、host、none
  16. php webshell 木马,消灭php webshell与一句话木马
  17. 基于FPGA的简易DDS信号发生器的设计(一)
  18. 创意发明:单片机做的半导体智能制冷小冰箱 原理图和程序源代码等技术文件
  19. 全国首例 | 国产ECMO在阜外医院成功救治一名患者
  20. 电脑账户头像怎么删掉_win10系统账户头像如何删除?windows10账户头像清除方法...

热门文章

  1. 华硕K40IN系列笔记本安装摘要
  2. Codeblocks + Widgets 创建窗口代码分析
  3. 四 蓝牙低功耗(BLE)协议栈 之 L2CAP层
  4. 【电气专业知识问答】问:隔离开关的功能及构造特点是什么?
  5. 图片压缩android bitmap compress(图片压缩)
  6. 机器学习实战之k-近邻算法识别手写数字(含拍照检验步骤详解)
  7. 云原生爱好者周刊:Fluentbit Operator 正式成为 Fluent 子项目
  8. 返回语句——return
  9. 【Python可视化】matplotlib画动态曲线
  10. Android 任意View转为bitmap图片