合并特定行 - awk / sed

时间:2016-07-27 18:50:20

标签: awk sed

我有一个包含数千个数字的文本文件,如下所示:

line 1: #0 #1 #2 #3 #4 #5
line 2: #6 #7 #8 #9 #10 #11
...
line 111: #106 #107 #108 #109 #110
line 112: #111 #112 #113 #114 #115
...

我想要做的是将文件格式化为:

line 1: #0 #1 #2 #3 #4 #5 #111 #112 #113 #114 #115 ...
line 2: #6 #7 #8 #9 #10 #11 #116 #117 #118 #119 #120 #121 ...
...
line 111: #106 #107 #108 #109 #110 #218 #219 #220 #221 #222 #223...

基本上我想在111x111矩阵中排列我的数字(所以在前面的第111行将保留到位线112将与第一行合并,行113与第二行合并,这将发生在每111行)。用awk / sed有没有办法做到这一点?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

试试这个,未经测试,因为你没有提供可测试的样本输入/输出:

  @Override
  public void onPrepared(MediaPlayer mp) {
    mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
      @Override
      public boolean onInfo(MediaPlayer mp, int what, int extra) {
        Log.d(TAG, "onInfo, what = " + what);
        if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
          // video started; hide the placeholder.
          placeholder.setVisibility(View.GONE);
          return true;
        }
        return false;
      }
    });

以上使用GNU awk进行多字符RS和awk -v RS='\\s' '{ORS=(NR%111?"\n":OFS)}1' file

答案 1 :(得分:1)

如果您对使用临时文件感到满意,可以使用split,然后使用pastesplit将文件拆分为每个n行的较小文件,paste获取输入文件并垂直连接。

为我们的临时文件选择任意前缀tmp

split -l 111 input.txt tmp
paste tmp* >output.txt
rm tmp*