GNU/Linux >> Linux の 問題 >  >> Linux

ファイル内の行の順序を変更する

$ seq 9 | sed -n 'p;n;h;n;G;p'
1
3
2
4
6
5
7
9
8

つまり、p 現在の行を印刷し、n を取得します ext one、h 古い、n を取得します ext one、G 保持された行を取得 (パターン スペースに追加) し、p その 2 行のパターン スペースを 3 行目と 2 行目を入れ替えて印刷します。


awk の使用 および整数演算:

awk 'NR%3 == 1 { print } NR%3 == 2 { delay=$0 } NR%3 == 0 { print; print delay; delay=""} END { if(length(delay) != 0 ) { print delay } }' /path/to/input

モジュラス演算子は整数除算を実行し、剰余を返すため、各行に対してシーケンス 1、2、0、1、2、0 [...] が返されます。それを知っているので、モジュラスが 2 である行の入力を後で保存するだけです。つまり、ゼロのときに入力を出力した直後です。


別の問題 アプローチ:

awk '{print $0; if ((getline L2)>0 && (getline L3)>0){ print L3 ORS L2 }}' file

出力:

gi_1234
I have a cat.
My cat is blue.
gi_5678
I also have a dog.
My dog is orange.
  • (getline L2)>0 && (getline L3)>0 - 次の 2 を抽出します 存在する場合は記録

  • 2 番目と 3 番目のレコードはそれぞれ L2 に割り当てられます そして L3 それぞれの変数


Linux
  1. ファイルの行をループする方法は?

  2. ファイルの行数を数えますか?

  3. 単一のファイルの権限を変更するにはどうすればよいですか?

  1. Bashで、最初のX行をスキップしてファイルを印刷します

  2. ファイルの行をコマンドの引数として使用するにはどうすればよいですか?

  3. ファイルの ctime または Change time 属性の設定/変更

  1. ファイルの行数だけを取得する方法

  2. Yocto で u-boot の構成を変更する方法

  3. SFTP サーバーが使用しているエンコーディングを変更するにはどうすればよいですか?