awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Ini memotong apa yang ada sebelum bidang yang diberikan nr., N, dan mencetak semua sisa baris, termasuk bidang nr.N dan mempertahankan jarak asli (tidak memformat ulang). Tidak masalah jika string bidang muncul juga di tempat lain dalam baris, yang merupakan masalah dengan jawaban daisaa.
Tentukan fungsi:
fromField () {
awk -v m="\x0a" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
Dan gunakan seperti ini:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
Output mempertahankan segalanya, termasuk spasi tambahan
Berfungsi dengan baik untuk file di mana '/ n' adalah pemisah record sehingga Anda tidak memiliki karakter baris baru di dalam baris. Jika Anda ingin menggunakannya dengan pemisah rekaman lain, gunakan:
awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
sebagai contoh. Bekerja dengan baik dengan hampir semua file selama tidak menggunakan karakter heksadesimal. 1 di dalam garis.