Tidak ada yang bekerja di Windows (misalnya, Git Bash) jelas. Gunakan jawaban @ Mikel di sana (pembatas default adalah tab, cukup hilangkan -dargumen).
Tetapi mungkin selalu lebih aman untuk menyebutkan flag semacam itu secara eksplisit, baik untuk keterbacaan maupun portabilitas. Saya bisa membayangkan beberapa orang mendesain cutuntuk Windows tidak akan mengikuti standar lengkap.
@ WillemVanOnsem, jika seseorang menulis versi cutuntuk Windows dan tidak mengikuti spesifikasi POSIX untuknya, tidak ada alasan untuk menganggap bahwa skrip POSIX apa pun akan bekerja dengan sistem itu. Tetap berpegang pada fitur yang ditentukan POSIX. Jangan coba-coba mengizinkan implementasi hipotetis di masa depan yang hipotetis; bukan itu yang dimaksud dengan "portabilitas".
Wildcard
12
awk -F '\t''{ print $2 }' inputfile
Ini mengekstrak bidang tab-delimited kedua dari setiap baris input dari inputfile.
Lebih umum, tanpa memerlukan karakter yang tidak terlihat: Gunakan truntuk mengkonversi pembatas ke format yang dapat ditentukan dengan lebih mudah cut.
$ echo -e "a\tb\tc"|tr '\t'' '|cut -d' '-f2
b
tr adalah alat pencocokan dan penggantian karakter yang sederhana namun kuat.
Tetapi bagaimana jika inputnya abc(space)def(tab)ghi? Jawaban Anda akan menghasilkan def, tetapi harus menghasilkan ghi. Demikian pula, jika inputnya adalah ABC(tab)DEF(space)GHI, jawaban Anda akan menghasilkan DEF, tetapi harus menghasilkan DEF(space)GHI.
G-Man
@ G-Man: Pembatas ruang hanyalah contoh. Gunakan pembatas apa pun yang sesuai untuk data Anda - misalnya koma. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
nobar
... Tapi, ya, jika pembatas harus berupa tab, maka pendekatan saya tidak akan berhasil.
Jawaban:
Dua arah:
Tekan Ctrl+ Vlalu Tab.
atau tulis seperti ini:
sumber
-d
argumen).ksh93
, bukanbash
. Itu didukung oleh ksh93, zsh, bash, mksh, dan FreeBSD sh setidaknya ( itu mungkin membuatnya ke pembalikan utama berikutnya dari spesifikasi standar POSIX untuksh
).Tab adalah default.
Lihat halaman cut man .
Jadi, Anda harus menulis
sumber
cut
untuk Windows tidak akan mengikuti standar lengkap.cut
untuk Windows dan tidak mengikuti spesifikasi POSIX untuknya, tidak ada alasan untuk menganggap bahwa skrip POSIX apa pun akan bekerja dengan sistem itu. Tetap berpegang pada fitur yang ditentukan POSIX. Jangan coba-coba mengizinkan implementasi hipotetis di masa depan yang hipotetis; bukan itu yang dimaksud dengan "portabilitas".Ini mengekstrak bidang tab-delimited kedua dari setiap baris input dari
inputfile
.sumber
Lebih umum, tanpa memerlukan karakter yang tidak terlihat: Gunakan
tr
untuk mengkonversi pembatas ke format yang dapat ditentukan dengan lebih mudahcut
.tr
adalah alat pencocokan dan penggantian karakter yang sederhana namun kuat.sumber
abc(space)def(tab)ghi
? Jawaban Anda akan menghasilkandef
, tetapi harus menghasilkanghi
. Demikian pula, jika inputnya adalahABC(tab)DEF(space)GHI
, jawaban Anda akan menghasilkanDEF
, tetapi harus menghasilkanDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2