レコードが2行に分割されたテキストファイルがあります。私はそれらを並べるのが好きです。記録は次のとおりです。
2013-07-29
apt-get install git
2013-07-29
apt-get install rsync
2013-07-31
apt-get install nmap
2013-08-02
apt-get install cifs-utils
2013-08-05
apt-get install telnet
次の情報を取得したいと思います。
2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
試しましたが、sed
2行を一致させることはできません。ヒントsed
またはより良いツールがありますか?
答え1
sed 'N;s/\n/ /'
N
次の入力ラインをパターン空間に接続するs/\n/ /
行をスペースで区切る改行を置き換えます。
または:
sed -n 'N;s/\n/ /;/regex/p'
-n
最後のコマンドでパターン空間の自動印刷を無効にします。/regex/p
正規表現に一致する行を印刷します。
g
3つ以上の行を連結するには、代替修飾子を使用してください(例:)N;N;N;s/\n/ /g
。
答え2
この行apt-get
の前にスペースがあるようです。説明する:
sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile
希望の結果を得る必要があります。
または、次のものを使用できますpaste
。
paste -d' ' - - < inputfile