如何将前N个字节从文本文件移动到另一个文本文件

时间:2014-08-07 08:06:45

标签: linux shell unix cut tail

我遇到了一个极端问题,我能想象的所有解决方案都很复杂。根据我的UNIX / Linux经验,必须有一个简单的方法。

我想在log.txt.file中删除文件的前n个字节足够长。好吧,我相信有人会给我一个令人难以置信的简单解决方案,我无法想象。

2 个答案:

答案 0 :(得分:0)

如何使用 -c 选项尾部

来自男人:

 -c, --bytes=K
          output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file

所以你可以做点什么      tail -c + N log.txt.file

 where N is the Number of bytes to delete

示例:

 [prompt]$ cat file
 ABCDEFGH
 [prompt]$ tail -c +2 file                      //output bytes starting from the second byte
 BCDEFGH
 [prompt]$ tail -c +3 file                     //output bytes starting from the third byte
 CDEFGH
 [prompt]$ tail -c +5 file                     //output bytes starting from the fifth byte
 EFGH

 [prompt]$ ls -l
 -rw-r--r-- 1 user users 9 2014-08-07 10:22 file         // 9 bytes
 [prompt]$ tail -c +S file >> file2                      //this will copy file content to file2 escaping the first 4 bytes
 [prompt]$ ls -l file2                                   
 -rw-r--r-- 1 user users 5 2014-08-07 10:29 file2         // 5 bytes (9 - first 4 bytes)

我必须提一下,您还可以使用 - bytes 选项从文件中获取最后N个字节。

  [prompt]$ tail --bytes=5 file              //print the last 5 bytes
  EFGH

答案 1 :(得分:0)

我不确定你想要什么:你的标题是将第一个N字节移动到另一个文件,你的文字说你要删除前N个字节

tail -c +N log.txt

将在前N个字节后输出所有内容,因此这将回答您的文本问题。 将它们移动到另一个文件(如标题要求),你必须做到

head -c N log.txt > other.file