Diberikan: ada 40 kolom dalam catatan. Saya ingin mengganti kolom ke-35 sehingga kolom ke-35 akan diganti dengan isi kolom ke-35 dan simbol "$". Apa yang terlintas dalam pikiran adalah sesuatu seperti:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Ini bekerja tetapi karena tidak layak ketika jumlah kolom sebesar 10k. Saya perlu cara yang lebih baik untuk melakukan ini.
linux
text-processing
awk
replace
Marcus Thornton
sumber
sumber
sed 's/./$&/35'
$
- dibatasi atau tidak. Hal di atas harus membubuhkan kemunculan ke-35 dari sejumlah karakter pembatas - dengan kata lain, bidang ke-35 - dengan karakter$
- tidak peduli bagaimana karakter di masing-masing bidang.Untuk memesan Field-Seprator asli, saya melakukan ini. Kolom yang ingin saya hapus adalah angka $ 12.
Dengan
gawk -i
, jika Anda memilikinya, Anda dapat mengedit file di tempatnya.sumber
Seandainya masalah menggunakan jawaban "disetujui", itu akan menggantikan lebih dari sekadar kolom pertama dalam file. Saya menggunakan perintah umum ini:
Dimana:
[column]
= kolom yang ingin Anda ubah dimulai dengan 1 (bukan 0)[replace]
= teks yang ingin Anda gantisumber
awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile
... mengganti sejuta cap waktu dalam beberapa detik !! :)