単純なbashスクリプトを使用して、次のような多くの行を含むテキストファイルを生成します。
192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3
次に、このファイルを次のように再フォーマットします。
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
この方法で再フォーマットするにはどうすればよいですか?おそらくsed
?
$ sed '$!N;s/\n/ /' infile
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
シェルのみの代替手段は次のとおりです。
while read first; do read second; echo "$first $second"; done
私はこのソリューションのシンプルさが大好きです
cat infile | paste -sd ' \n'
192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
または、スペースで区切る代わりにカンマで区切る
cat infile | paste -sd ',\n'
入力ファイルにタイムスタンプのような3行目がある場合
192.168.1.1
hostname1
14423289909
192.168.1.2
hostname2
14423289910
192.168.1.3
hostname3
14423289911
唯一の変更は、区切り文字リストに別のスペースを追加することです
cat infile | paste -sd ' \n'
192.168.1.1 hostname1 14423289909
192.168.1.2 hostname2 14423289910
192.168.1.3 hostname3 14423289911