Saya punya file dengan baris-baris ini
G8 = P(G1,G3)
G9 = P(G3,G4)
G12 = P(G2,G9)
G15 = P(G9,G5)
G16 = P(G8,G12)
G17 = P(G12,G15)
Saya butuh output sebagai
G1,G3
G3,G4
.....
Bagaimana saya bisa melakukannya dengan perintah sed / grep atau menggunakan perl?
-F
Anda dapat memilih karakter apa yang akan digunakan oleh awk untuk membagi baris menjadi bidang. Di sini, saya memberikan kelas karakter ([]
) yang terdiri dari tanda kurung buka dan tutup. Jadi itu akan membagi garis(
dan seterusnya)
. Akibatnya, bidang ke-2 akan menjadi isi tanda kurung. Misalnya, dengan stringG8 = P(G1,G3)foo
,$1
akanG8 = P
,$2
akanG1,G3
dan$3
akanfoo
.Ada lebih dari satu cara untuk melakukannya:
atau:
sumber
Yang mencari tanda kurung buka, abaikan saja, lalu cetak semua karakter tanda kurung non-tutup yang mengikutinya.
Membutuhkan GNU grep
sumber
sed 's/^.*(//;s/)$//' /path/to/file
Untuk memecah ini:
sed
adalahs
treamed
itor.'s/^.*(//;s/)$//'
adalah skrip yang dikirimsed
, yang dirinci sebagai berikut:sumber
sumber
sumber
awk -F"[()]" '{print $2}' file
seperti dalam jawaban