Apa yang dimaksud dengan *NIX cara menghapus redundansi dalam kasus di mana saya memiliki perbandingan berpasangan seperti ini dalam dua kolom
A B
B A
A C
A D
C A
D A
B C
C B
A B
dan B A
mewakili perbandingan yang sama dan saya ingin menghapus redundansi tersebut dari dataset. Hasil akhirnya seharusnya
A B
A C
A D
B C
Jawaban yang Diterima:
doit ()
{
awk '{
key=$1<=$2? $1 FS $2 : $2 FS $1;
if (!seen[key]) print $1,$2
seen[key]=1
}'
}
$ doit <test
A B
A C
A D
B C
$
(Atau, semakin seru karena jawaban Chris Down sangat manis)
awk '!seen[$1<=$2? $1 FS $2: $2 FS $1]++ {print $1,$2}'
yang dapat dikurangi lebih lanjut jika Anda tidak peduli dengan ruang di data Anda
awk '!seen[$1<=$2? $1 FS $2: $2 FS $1]++'
)
FS
adalah variabel "pemisah bidang" awk, yang digunakan di sini untuk menjamin batas antara bidang utama akan diidentifikasi dengan benar. Asli saya menjalankannya bersama-sama, $1$2
, yang seperti yang ditunjukkan Stephane Chazelas akan memperlakukan A BC
dan AB C
sebagai duplikat.
Linux – Bagaimana Menemukan Proses Menggunakan Port Serial?
Linux – Bisakah Seorang Pengguna Tunggal Memiliki Banyak File Crontab?