跳过文件的前 3 个字节

Alv*_*SIU 17 shell ksh aix text-processing

我正在使用 AIX 6.1 ksh shell。

我想用一个班轮做这样的事情:

cat A_FILE | skip-first-3-bytes-of-the-file
Run Code Online (Sandbox Code Playgroud)

我想跳过第一行的前 3 个字节;有没有办法做到这一点?

Jon*_*ler 26

老派——你可以使用dd

dd if=A_FILE bs=1 skip=3
Run Code Online (Sandbox Code Playgroud)

输入文件为A_FILE,块大小为 1 个字符(字节),跳过前 3 个“块”(字节)。(对于ddGNU 等一些变体dd,您可以bs=1c在此处使用- 以及bs=1k在其他情况下读取 1 KB 块的替代方案dd。AIX 上的似乎不支持这一点;BSD(macOS Sierra)变体不支持c但是不支持kmg,等)

还有其他方法可以达到相同的结果:

sed '1s/^...//' A_FILE
Run Code Online (Sandbox Code Playgroud)

如果第一行有 3 个或更多字符,则此方法有效。

tail -c +4 A_FILE
Run Code Online (Sandbox Code Playgroud)

你也可以使用 Perl、Python 等等。


小智 21

cat您可以这样使用tail,而不是使用:

tail -c +4 FILE
Run Code Online (Sandbox Code Playgroud)

这将打印出整个文件,除了前 3 个字节。咨询man tail更多信息。