以下のようなデータがあります。
abcd
join abcd
efgh
join efgh
2つの連続したペアを1つの行に結合したい. 結果:
abcd join abcd
efgh join efgh
Perl/AWK でそれを行うにはどうすればよいですか?
$ sed 'N;s/\n/ /' input.txt
abcd join abcd
efgh join efgh
最も簡単な方法は次のとおりです。
paste - - < FILE
これは、タブの代わりにスペースを使用して結合します。
paste -d" " - - < FILE
パール:
perl -pe's/\n/ / if $. % 2' file
ゴルフ チャレンジ: 上記を 5 文字短くしてください。
ゴルフチャレンジソリューション:
perl -pe'$.%2&&s/
/ /' file
cat input | paste -sd' \n'
リストが指定されている場合、区切り文字を交互に貼り付けます。
私の最初の本能:
perl -lne 'if ($. % 2) { $last = $_; } else { print "$last $_" }'
@kev の sed ソリューションに触発された、やや簡潔なバージョン:
perl -lpe '$_ .= " " . <>; chomp'
しかし、私は sed がこのラウンドに勝つと思います。
awk '{getline a; printf "%-s\n", $0 " " a}' file