Saya memiliki string yang dipisahkan spasi yang dihasilkan oleh perintah, yang ingin saya beri pipa cut
, gunakan -fd ' '
untuk membagi spasi. Saya tahu saya bisa menggunakan -f <n>
untuk menampilkan nomor bidang <n>
, tetapi bisakah saya membuatnya menampilkan bidang terakhir jika saya tidak tahu panjang string?
Atau apakah saya perlu menggunakan alat pengedit teks yang lebih fleksibel seperti sed
atau awk
?
command-line
cut-command
Arronikal
sumber
sumber
-n
menjadikannya n dari awal,n-
dari n hingga akhir, dan ada--complement
opsi yang membalikkan seleksi. Tetapi tidak ada cara untuk menghitung jumlah bidang dan bertindak sejauh yang saya tahu.Jawaban:
Tidak,
cut
tidak bisa. Anda bisa menggunakan duarev
perintah, sepertitetapi biasanya lebih mudah digunakan
awk
:sumber
Anda dapat melakukan ini hanya dengan menggunakan shell, tidak ada alat eksternal yang diperlukan, menggunakan Ekspansi Parameter:
var##*
akan membuang semuanya dari mulai hingga ruang terakhir dari parameter (variabel)var
.Jika pembatas dapat berupa spasi kosong, misalnya spasi atau tab, gunakan kelas karakter
[:blank:]
:Contoh:
sumber
Saya pribadi suka jawaban Florian Diesch. Tapi ada juga cara ini.
Penjelasan:
wc -w
memberi jumlah kata. dancut
memotong kata terakhirEDIT:
Saya menemukan cara lain untuk Melakukannya:
sumber
a="my string here"
saya bisa menggunakan ekspansi parameter${a##* }
juga.Ini salah satunya menggunakan
grep
Bagaimana itu bekerja:
-o
Mencetak hanya bagian yang cocok (tidak kosong) pada baris yang cocok.[^ ]*$
mencocokkan apa pun dari ujung hingga menemukan spasi.Satu lagi liner dari glenn jackman menggunakan perl
sumber