如何仅在第一行执行操作?

如何仅在第一行执行操作?
sed 's/.\(.*\)/\1/' myfile

假设我的文件包含:

abc
def
ghi

我只想从第一行删除第一个字符,但上面的内容从所有行中删除它。

答案1

或许sed '1s/.\(.*\)/\1/' myfile

答案2

也可以使用awk:awk 'NR==1 {sub(/./,"")} 1'

答案3

tail可以从a读取字节偏移量,所以如果您的文件仅使用单字节字符(通常是 UTF-8 ASCII),这样就可以了。

这取决于你的情况,无论它对你是否重要,但比......tail更快,可能是因为sedsed需要单独处理每一行,...但是不要在有第一行机会的地方使用它特点使用多个字节。

tail -c +2 "file"  

man tail

-c, --bytes=N 输出最后N个字节;或者,使用 +N 输出从每个文件的第 N 个开始的字节

相关内容