sed -n 's/^potato:[[:space:]]*//p' file.txt
Seseorang dapat menganggap Grep sebagai Sed terbatas, atau Sed sebagai Grep umum. Dalam hal ini, Sed adalah salah satu alat bagus dan ringan yang melakukan apa yang Anda inginkan -- meskipun, tentu saja, ada beberapa cara lain yang masuk akal untuk melakukannya juga.
grep -Po 'potato:\s\K.*' file
-P untuk menggunakan ekspresi reguler Perl
-o untuk menampilkan hanya kecocokan
\s untuk mencocokkan spasi setelah potato:
\K untuk menghilangkan kecocokan
.* untuk mencocokkan sisa string
Atau gunakan pernyataan regex:grep -oP '(?<=potato: ).*' file.txt
grep 'potato:' file.txt | sed 's/^.*: //'
grep mencari setiap baris yang berisi string potato: , lalu, untuk setiap baris ini, sed menggantikan (s/// - gantikan) karakter apa saja (.* ) dari awal baris (^ ) hingga kemunculan terakhir dari urutan : (titik dua diikuti spasi) dengan string kosong (s/...// - ganti bagian pertama dengan bagian kedua, yang kosong).
atau
grep 'potato:' file.txt | cut -d\ -f2
Untuk setiap baris yang berisi potato: , cut akan membagi baris menjadi beberapa bidang yang dibatasi oleh spasi (-d\ - d =pembatas, \ =karakter spasi yang lolos, seperti -d" " juga akan berfungsi) dan mencetak bidang kedua dari setiap baris tersebut (-f2 ).
atau
grep 'potato:' file.txt | awk '{print $2}'
Untuk setiap baris yang berisi potato: , awk akan mencetak kolom kedua (print $2 ) yang secara default dibatasi oleh spasi.
atau
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Semua baris yang berisi potato: dikirim ke inline (-e ) Skrip Perl yang mengambil semua baris dari stdin , lalu, untuk setiap baris ini, lakukan penggantian yang sama seperti pada contoh pertama di atas, lalu cetak.
atau
awk '{if(/potato:/) print $2}' < file.txt
File dikirim melalui stdin (< file.txt mengirimkan isi file melalui stdin ke perintah di sebelah kiri) ke awk skrip itu, untuk setiap baris yang berisi potato: (if(/potato:/) mengembalikan nilai true jika regular expression /potato:/ cocok dengan baris saat ini), mencetak kolom kedua, seperti dijelaskan di atas.
atau
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
File dikirim melalui stdin (< file.txt , lihat di atas) ke skrip Perl yang bekerja mirip dengan yang di atas, tetapi kali ini juga memastikan setiap baris berisi string potato: (/potato:/ adalah ekspresi reguler yang cocok jika baris saat ini berisi potato: , dan, jika ya (&& ), lalu mulai menerapkan ekspresi reguler yang dijelaskan di atas dan mencetak hasilnya).