sed: extra characters at the end of l command及undefined label錯誤
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錯誤相关推荐
- mac 执行sed -i指令时,总是出现extra characters at the end of command
第一次使用mac电脑,在报表项目中,由于每个报表模板都包含有一个特定的ip数据源,数据源更换了,就得更换原有的数据.文件比较多,不想一个一个的文件修改,就想到用sed指令进行批量修改,于是执行了如下指 ...
- Tcl经典报错 之 extra characters after close-quote
作为脚本语言tcl的空格使用尤为重要 经典报错之 extra characters after close-quote 错误的情况 % array set a [list "School,B ...
- QT 报错 error: Extra characters after test expression 。该情况下成功解决
问题描述 pri文件中,设计到含有空格的路径名时,即使加了$$quote,在QMake的时候仍然会报错error: Extra characters after test expression 解决方 ...
- Qt Extra characters after test expression toolchain.prf
Qt Creator在编译时报错:Extra characters after test expression(不是pro文件而是这个toolchain.prf) 原因:DOS的默认编码不一致造成的, ...
- Qt:Extra characters after test expression.
编译环境:Ubuntu18.04 Qt5.11.2 .pro文件出现错误,提示为Extra characters after test expression. 出错原因: 在RESOURCES += ...
- sed: -e expression #1, char 8: unterminated `s‘ command
使用sed命令替换指定文本中的字符串时,遇到了sed: -e expression #1, char 8: unterminated `s' command 网上查了好多,终于找到解决方案,在这里给个 ...
- shell expect 报错 extra characters after close-brace close-quote
可能原因 流程控制语句中的"{" 或者 "}" 之间需要空格,但是没有空格 spawn 执行语句的变量被引号引起来了,应去掉引号 { } 不配对,语法错误 示例 ...
- 使用TASM时报错extra characters on line的解决办法
多打了一个,号,将MOV AX,[BX],[SI]修改为MOV AX,[BX][SI]
- 汇编语言extra characters on line
解决办法:最先检查一下代码是不是打错了,不是得话其实就是汇编语言不允许有中文状态下的空格,最后把出错的那一行代码重新打一遍
最新文章
- 设计模式---单例模式(多线程下的单例模式)
- if嵌套while循环语句_Python学习笔记015--while循环嵌套
- mysql中语句块当事务,MySQL事务与隔离级别
- java循环1000000000_Java11比Java8快多少,不是测试人员一眼也能看懂
- SpringBoot之第一个Restfu示例
- 云盘存储 教学反思_现代教育技术
- Visio2016安装
- 新零售做好客流数据分析才是提升线下商场、购物中心人流量的方向
- 学习日志12:DoS技术及工具总结
- Android开发使用百度地图定位误差过大
- 3D旋转相册(附源码+素材)
- AutoCAD 系统变量
- 面试的反杀-你有没有想要问我的
- 关于腾讯应用宝上架的应用版本回退的问题
- 手动档科目三考试过程
- python getattrribute_Python学习——面向对象高级之反射
- 网站点击弹窗微信二维码功能纯CSS
- 老卫带你学---DDSM乳腺癌数据研究
- 三级分销系统哪家好?360shop
- c++实现“反应时间”测试
热门文章
- Android 手机震动功能的实现
- 决策树模型回归可视化分析_回归树分析与sklearn决策树案例!
- python将gml格式的图数据转为txt格式,点和边的字符值分别用数字替代
- PaddleOCR简单文字识别使用(一)
- Windows远程文件下载执行的15种姿势
- matlab中无法解析名称,无法解析名称 audiovideo.internal.FilePath。
- css基础精华---Flex 布局教程:实例篇
- 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡
- 注解@Value()的使用
- 远程桌面连接失败解决方案