Unix系统如何仅对文件第一行执行cut操作移除前两个字符
实现仅删除文件第一行前两个字符的几种方案
cut命令本身设计为逐行处理输入内容,没有内置参数可以指定仅作用于指定行,你可以用以下几种更灵活的文本处理工具实现需求:
方案1:使用sed命令(最简洁)
sed支持指定行号匹配处理,命令如下:
# 仅输出处理后的内容,不修改原文件 sed '1s/^.\{2\}//' file
参数说明:
1表示仅匹配第一行进行处理s/^.\{2\}//是替换规则:匹配行首的任意2个字符,替换为空,即删除前两个字符
如果需要直接修改原文件,根据你的系统环境调整参数:
- GNU sed(Linux默认):
sed -i '1s/^.\{2\}//' file - BSD sed(macOS默认):
sed -i '' '1s/^.\{2\}//' file
方案2:使用awk命令
awk可以通过行号变量NR判断处理逻辑:
awk 'NR==1 {print substr($0,3)} NR>1 {print}' file
逻辑说明:
- 行号等于1时,从第3个字符开始截取输出
- 行号大于1时,整行原样输出
方案3:结合cut和头部/尾部命令
如果坚持要使用cut实现,可以拆分文件内容分别处理后拼接:
{ head -n 1 file | cut -c 3-; tail -n +2 file; }
逻辑说明:
- 先取第一行,用cut删除前两个字符输出
- 再取第二行及之后的所有内容,原样输出
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

