web-dev-qa-db-ja.com

awkまたはsedを使用して2つの連続する行を結合する

Awkまたはsedを使用して2つの行を結合するにはどうすればよいですか?

for e.g.:

私は次のようなデータを持っています:

abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl

以下のような出力が必要です。

joinabcdabcd
joinefghefgh
joinijklijkl
17
Vijay
awk '!(NR%2){print$0p}{p=$0}' infile
43
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile

Sedの必要はありません。

5
bashflyng

彼らは、模倣はお世辞の誠実な形であると言います。
これは、Dimitreのawkコードに触発されたPerlソリューションです。

Perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile

$_は現在の行です
$.は行番号です

3
Chris Koknat

Printfは3進数で使用できます。

    awk '{printf (NR%2==0) ? $0 "\n" : $0}'
3
Bryon Nicoson

ここにそれはsedにあります:

sed 'h;s/.*//;N;G;s/\n//g' < filename
2
Beta

上記の「sed」スクリプトにいくつかの改善が加えられ、次のようになります。1008
-2734406.132904 2846
-2734414.8384554636
-2734413.594009 6456
-2734417.316269 8276
-2734414.779617

  and make it :    

1008 -2734406.132904
2846 -2734414.838455
4636 -2734413.594009
6456 -2734417.316269
8276 -2734414.779617

  the "sed" is : "sed 'h;s/.*//;G;N;s/\n/ /g'"
0
user1655920

これは、コマンドの「カウントとファイルを同じ行に表示する方法」の質問に対する答えです。

見つける。 -type f -exec fgrep -ci "MySQL" {} \; -印刷

ブライアン・ニコルソンの答えが最良の結果を生み出しました。

0
Mark