Bagaimana saya dapatkan dari ini:
randomcollege-nt\user90
untuk ini:
user90
menggunakan sed
?
command-line
sed
text-processing
Roboman1723
sumber
sumber
man the_command_name
dan Anda akan mendapatkan buku petunjuk yang bermanfaat untuk perintah tersebut. Anda juga dapat mengunjungi www.google.com dan mengetik "tutorial command_name" dan Anda akan menemukan banyak panduan langkah-demi-sisi.sed
kunjungan: grymoire.com/Unix/Sed.htmlJawaban:
Saya akan menggunakan sederhana
grep
untuk mencariuser90
:Jika user90 tidak konstan, lebih suka perintah ini:
Akhirnya gunakan
sed
untuk mengedit file di tempat:Atau untuk mencocokkan semua akun pengguna yang mungkin:
sumber
grep -F
seluruh string.Anda menguraikan beberapa teks untuk mengekstrak nama pengguna dari sebuah
domain\username
string, kemungkinan besar dari Windows. Sebagian besar jawaban di atas hanya menjawab string contoh spesifik Anda.Cara terbaik untuk melakukan ini adalah menggunakan regex dalam sed untuk mengekstrak apa pun yang terjadi setelahnya
\
. Begini cara Anda melakukannya:Itu akan cocok dengan semuanya (
.*
) sampai garis miring terbalik (di sini, kita lolos, jadi begitu\\
), lalu cocokkan semuanya setelah garis miring terbalik (.*
), tetapi menjadikannya grup penangkap (yaitu membungkus tanda kurung di sekitarnya, tetapi kita juga harus melarikan diri mereka, jadi\(.*\)
). Sekarang kita memiliki apa pun yang muncul setelah\
dalam string sebagai grup tangkap, kita mencetaknya dengan merujuknya\1
.Anda dapat menggunakan
sed
perintah di atas dengan nama domain apa saja, tidak harusrandomcollege-nt
.sumber
Lainnya
sed
:atau POSIXly:
sumber
sh
fitur POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/…Saya tahu Anda ingin menggunakan sed, tapi saya akan menggunakan sesuatu yang berbeda ...
sumber
Apakah ini pertanyaannya?
jika status acak-nt tidak ada, gunakan perintah awk di atas / bawah.
sumber
/user90
tidak mendapatkanuser90
Alih-alih Anda menggunakan 'awk' untuk memfilter "user90":
sumber
Perintah grep sederhana ini akan melakukan pekerjaan,
sumber
Dengan
sed
menghapus semua yang ada di string sebelum karakter tertentu (tentukan menjadi braket ganda [Spesifik char]).Berarti mengganti semua (
.*[\]
) karakter sebelum\
char dengan karakter whitespace (//
)Jika Anda memiliki file dan ingin menggantikan ganti gunakan
-i
flag insed
command seperti ini:sumber
Pertanyaan aslinya diajukan
sed
, tetapi saya melihat bahwa alternatifnya populer di sini.Jika Anda menggunakan Bash, ekspansi parameter adalah yang paling sederhana:
Jika Anda berpotensi mengharapkan lebih dari satu garis miring terbalik, gandakan tanda hash:
Untuk informasi lebih lanjut,
man bash
dan cariParameter Expansion
.sumber
Jika ada orang yang mencoba untuk menghapus komentar
# server_tokens off;
dari nginx secara otomatis untuk membantu dengan auto dev-ops:sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
.Diuji dan berfungsi untuk nginx / 1.12.1 di Ubuntu 16.04 LTS. Jawaban terkait untuk mengunci NGINX dengan mematikan token server di sini .
sumber