1

テキスト行のペアの順序を逆にする必要があります例:

  • ファーストライン1
  • セカンドライン1
  • ファーストライン2
  • セカンドライン2
  • ファーストライン3
  • セカンドライン3

  • セカンドライン1
  • ファーストライン1
  • セカンドライン2
  • ファーストライン2
  • セカンドライン3
  • ファーストライン3

それを自動化する方法を探しています(ソートするのに650行あります)、魔法の解決策はありますか?ありがとう

4

2 に答える 2

2

仮定

以下の両方のソリューションでは、回線が実際にペアになっている必要があります。そうしないと、最後の行が印刷されません。

SED ソリューション

sed -n 'h; s/.*//; n; G; p' /tmp/foo
  1. 自動印刷を無効にします。
  2. 行をコピーしてスペースを保持します。
  3. パターンスペースを削除します。
  4. 次の行をパターン空間に読み込みます。
  5. 保留スペースを追加します。
  6. パターン空間を印刷します。

AWK ソリューション

awk -F'\n' 'NR%2==1 {line=$0}; NR%2==0 {print $1 "\n" line}' /tmp/foo
  1. 空白で行をフィールドに分割しないでください。
  2. 行が奇数の場合、行を保存します。
  3. 行が偶数の場合、現在の行と格納されている行を出力します。
于 2012-06-29T09:58:25.523 に答える
0

より明白なシェルバージョン:

while read -r firstline ; read -r secondline
do
    printf '%s\n%s\n' "$secondline" "$firstline"
done
于 2012-07-01T13:22:18.480 に答える