$ seq 9 | sed -n 'p;n;h;n;G;p'
1
3
2
4
6
5
7
9
8
Yaitu, p
cetak baris saat ini, dapatkan n
ext satu, h
lama, dapatkan n
ext satu, G
et baris yang dipegang (tambahkan ke ruang pola) dan p
cetak ruang pola 2 baris dengan baris ketiga dan kedua ditukar.
Menggunakan awk
dan matematika bilangan bulat:
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
Operator modulus melakukan pembagian bilangan bulat dan mengembalikan sisanya, sehingga untuk setiap baris akan mengembalikan urutan 1, 2, 0, 1, 2, 0 [...]. Mengetahui hal itu, kami hanya menyimpan input pada baris di mana modulusnya adalah 2 untuk nanti -- yaitu, setelah mencetak input ketika nilainya nol.
awk lainnya pendekatan:
awk '{print $0; if ((getline L2)>0 && (getline L3)>0){ print L3 ORS L2 }}' file
Keluarannya:
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
- ekstrak 2 berikutnya catatan jika ada -
setiap catatan ke-2 dan ke-3 ditetapkan ke
L2
danL3
variabel masing-masing