4

以下のようなデータがあります。

abcd
join abcd
efgh
join efgh

2つの連続したペアを1つの行に結合したい. 結果:

abcd join abcd
efgh join efgh

Perl/AWK でそれを行うにはどうすればよいですか?

4

6 に答える 6

13
$ sed 'N;s/\n/ /' input.txt
abcd join abcd
efgh join efgh
于 2012-04-19T01:23:05.440 に答える
8

最も簡単な方法は次のとおりです。

paste - - < FILE

これは、タブの代わりにスペースを使用して結合します。

paste -d" " - - < FILE
于 2012-04-19T01:49:28.197 に答える
4

パール:

perl -pe's/\n/ / if $. % 2' file

ゴルフ チャレンジ: 上記を 5 文字短くしてください。

ゴルフチャレンジソリューション:

perl -pe'$.%2&&s/
/ /' file
于 2012-04-19T02:32:45.393 に答える
3
cat input | paste -sd' \n'

リストが指定されている場合、区切り文字を交互に貼り付けます。

于 2015-04-10T23:50:00.987 に答える
2

私の最初の本能:

perl -lne 'if ($. % 2) { $last = $_; } else { print "$last $_" }'

@kev の sed ソリューションに触発された、やや簡潔なバージョン:

perl -lpe '$_ .= " " . <>; chomp'

しかし、私は sed がこのラウンドに勝つと思います。

于 2012-04-19T01:22:51.947 に答える
2
awk '{getline a; printf "%-s\n", $0 " " a}' file 
于 2012-04-19T08:21:53.020 に答える