Saya suka menggunakan cut
perintah di Linux dengan -c
bendera. Namun, saya tertarik untuk menemukan perintah yang melakukan kebalikan dari cut
. Intinya, dengan masukan:
drwxrwxrwx 2 root root 4096 4096 4 20:15 bin
drwxrwxrwx 2 root root 4096 4096 4 20:15 Desktop
Saya ingin melihat semuanya kecuali “4096 4 20:15”. Berikut adalah outputnya:
drwxrwxrwx 2 root root bin
drwxrwxrwx 2 root root Desktop
Saya ingin benar-benar dapat memotong antara karakter x dan y, jika itu masuk akal.
Ada ide? Saya tidak bisa membayangkan ini akan menjadi skrip yang sulit untuk ditulis, tetapi jika sudah ada perintah untuk itu, saya ingin menggunakannya.
Jawaban yang Diterima:
Seperti yang telah ditunjukkan orang lain, Anda tidak boleh mengurai output ls
. Dengan asumsi Anda menggunakan ls
hanya sebagai contoh dan akan menguraikan sesuatu yang lain, ada beberapa cara untuk melakukan apa yang Anda inginkan:
-
cut
dengan-d
dan-f
cut -d ' ' -f 1,2,3,4,9
dari
man cut
:-d, --delimiter=DELIM use DELIM instead of TAB for field delimiter -f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
Khusus untuk
ls
ini kemungkinan akan gagal karenals
akan mengubah jumlah spasi putih di antara bidang yang berurutan untuk membuatnya sejajar lebih baik.cut
memperlakukanfoo<space>bar
danfoo<space><space>bar
berbeda. -
awk
dan variannya membagi setiap baris input menjadi bidang pada spasi putih sehingga Anda dapat memintanya untuk mencetak hanya bidang yang Anda inginkan:awk '{print $1,$2,$3,$4,$9}'
-
Perl
perl -lane 'print "@F[0 .. 3,8]"'