行をカスタム行にマージする[閉じる]

行をカスタム行にマージする[閉じる]

入力する:

ID   Name   NUMBER

1ABC234)234-2345,

2CBF23588900,

3knl334235354,

4gkmnk436563654,

希望の出力:

    *ID   Name   NUMBER            ID   Name   NUMBER       ID   Name   NUMBER*
LINE--1    1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2    4gkmn436563654,5JNKN53546536,6jknk5643545645,
LINE--3    7........,8..........,9............,
LINE--4    10.........,11.......,12...........

このコマンドを試しましたが、残念ながらすべてが1行に変わりました。

tr -d '\n'<sample.txt

ただし、上記と同じファイルを生成するには、unixコマンドを使用する必要があります。

ベストアンサー1

行をマージし、各新しい行には入力ファイルの3行が含まれており、同じヘッダーを保持したいとします。

$ ( head -n 1 file; sed '1d' file | paste -d '\0' - - - ) >newfile
$ cat newfile
ID   Name   NUMBER
1ABC234)234-2345,2CBF23588900,3knl334235354,
4gkmnk436563654,line5,line6,
line7,line8,line9,

私が使用する入力ファイルは

ID   Name   NUMBER
1ABC234)234-2345,
2CBF23588900,
3knl334235354,
4gkmnk436563654,
line5,
line6,
line7,
line8,
line9,

このheadコマンドはファイルのヘッダーのみを出力し、パイプは区切りsed文字pasteを挿入せずに残りの行を3つのグループに分配します。headこれにより、パイプとパイプの出力が新しいファイルにリダイレクトされます。

上記の特定のヘッダーが必要な場合は、headコマンド全体をecho 'insert header text here'

各行などが必要な場合は、次のようにLINE--1結果を渡します。pasteawk '{ print "LINE--" NR, $0 }'

$ ( head -n 1 file; sed '1d' file | paste -d '\0' - - - | awk '{ print "LINE--" NR, $0 }') >newfile    
$ cat newfile
ID   Name   NUMBER
LINE--1 1ABC234)234-2345,2CBF23588900,3knl334235354,
LINE--2 4gkmnk436563654,line5,line6,
LINE--3 line7,line8,

おすすめ記事