尝试删除多个.txt文件前23行时遭遇sed命令错误求助
解决sed删除多文件前23行的错误问题
你的命令出错有两个核心原因:
- 文件名匹配错误:
* .txt里的空格让shell把*和.txt当成两个独立参数,*会匹配当前目录下所有文件(包括非.txt文件),.txt则被当作一个不存在的文件名传入sed - 表达式未加引号:
1,23d没有用引号包裹,在某些shell环境下可能被解析成其他内容,导致sed无法识别正确的命令
正确命令分两种情况:
1. Linux系统(GNU sed)
sed -i -e '1,23d' *.txt
*.txt正确匹配所有后缀为.txt的文件- 用单引号包裹
1,23d,避免shell解析干扰sed的命令逻辑 -i直接原地修改文件(无备份)
2. macOS/BSD系统(BSD sed)
如果需要保留原文件备份(备份文件后缀为.bak):
sed -i.bak -e '1,23d' *.txt
如果不需要备份:
sed -i '' -e '1,23d' *.txt
BSD sed的-i参数必须指定备份后缀,空字符串表示不生成备份。
内容的提问来源于stack exchange,提问作者Mia Frothingham
相关产品推荐
相关产品推荐

