bagaimana kita bisa mengubah pembatas yang menggunakan grep?
Saya pikir, secara default, grep menggunakan \n
sebagai pembatas.
linux
shell-script
grep
studiohack
sumber
sumber
$/
) dan awk (RS
). Atau Anda bisa melakukan sesuatu sepertiecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Banyak jawaban, tergantung pada apa masalah Anda yang sebenarnya.Jawaban:
Kalau Anda peduli dengan output,
tr
mungkin bekerja untuk Anda:sumber
echo $my_var | tr @ '\n' | grep blahblah
$my var
untuk mempertahankan spasi putih dan baris baru, yaituecho "$my_var" | ...
.agrep
dari University of Arizona memungkinkan Anda untuk mengatur pembatas. Ini bukan pengganti drop-in untuk grep; menggunakan algoritma yang berbeda (perkiraan grep, dapat mencocokkan kesalahan) dan memiliki sintaksis pola yang berbeda. Tapi ini alat yang berguna.Sayangnya, saya pikir karena masalah perizinan, ada beberapa proyek serupa yang disebut
agrep
, dan tidak semuanya kompatibel. Tapi saya pikir semua versi memungkinkan Anda untuk menetapkan pembatas.sumber
sumber
d="${1}"
bukan hanyad="$1"
? (2) Anda perlu memperluas peringatan Anda: Jika ini digunakan dengan banyak file, Anda juga memiliki masalah jika salah satu nama file mengandung `@ '. (3) (Nit pick) Pengganti / emulator "grep" yang sebenarnya juga akan berfungsi dengan argumen nol file.Ganti pembatas nol ('@') dengan baris baru (\ n) sebelum grep:
sumber
Bagaimana dengan ini ? Ada gunanya?
Tetapkan '@' untuk apa pun yang sesuai dengan kebutuhan Anda.
sumber