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. 设计模式---单例模式(多线程下的单例模式)
  2. if嵌套while循环语句_Python学习笔记015--while循环嵌套
  3. mysql中语句块当事务,MySQL事务与隔离级别
  4. java循环1000000000_Java11比Java8快多少,不是测试人员一眼也能看懂
  5. SpringBoot之第一个Restfu示例
  6. 云盘存储 教学反思_现代教育技术
  7. Visio2016安装
  8. 新零售做好客流数据分析才是提升线下商场、购物中心人流量的方向
  9. 学习日志12:DoS技术及工具总结
  10. Android开发使用百度地图定位误差过大
  11. 3D旋转相册(附源码+素材)
  12. AutoCAD 系统变量
  13. 面试的反杀-你有没有想要问我的
  14. 关于腾讯应用宝上架的应用版本回退的问题
  15. 手动档科目三考试过程
  16. python getattrribute_Python学习——面向对象高级之反射
  17. 网站点击弹窗微信二维码功能纯CSS
  18. 老卫带你学---DDSM乳腺癌数据研究
  19. 三级分销系统哪家好?360shop
  20. c++实现“反应时间”测试

热门文章

  1. Android 手机震动功能的实现
  2. 决策树模型回归可视化分析_回归树分析与sklearn决策树案例!
  3. python将gml格式的图数据转为txt格式,点和边的字符值分别用数字替代
  4. PaddleOCR简单文字识别使用(一)
  5. Windows远程文件下载执行的15种姿势
  6. matlab中无法解析名称,无法解析名称 audiovideo.internal.FilePath。
  7. css基础精华---Flex 布局教程:实例篇
  8. 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡
  9. 注解@Value()的使用
  10. 远程桌面连接失败解决方案