Saya ingin mengubah baris "disable = yes" menjadi "disable = no" menjadi file berikut:
[root@centos2 ~]# cat /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = yes
per_source = 11
...
}
Saya mencoba ini:
[root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp
[root@centos2 ~]#
dengan hanya menyalin ruang dengan mouse saya tetapi tidak menangkap apa pun ...
Mengapa dan bagaimana saya bisa tahu apa saja elemen antara "disable" dan "="? Apakah ini beberapa ruang? tabulasi?
Saya tahu saya dapat melakukan grep menggunakan regex berikut:
[root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp
disable = yes
[root@centos2 xinetd.d]#
Dan akhirnya, apakah ada cara yang lebih baik untuk mengganti "ya" dengan "tidak" menggunakan sed daripada yang berikut:
[root@centos2 xinetd.d]# sed -r 's/disable.+= yes/disable =
no/g' /etc/xinetd.d/tftp
service tftp
{
...
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
...
}
EDIT:
Hasil dari perintah od terima kasih @ilkkachu
[root@centos2 xinetd.d]# < /etc/xinetd.d/tftp grep disable | od -c
0000000 \t d i s a b l e
0000020 = y e s \n
0000037
disable
tidak berada di awal baris. Saya telah mengubah RE saya sesuai.sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
tidak bekerja untuk saya juga (pada MacOS, dengan BSD sed). Kode asli OP berfungsi dengan baik untuk saya dengan GNU sed (v4.4).docker run -i centos:latest sed '/disable\>/s/\<yes\>/no/' <<<' disable = yes'
Mungkin tab. Anda bisa menggunakan sesuatu seperti
untuk melihat. Ini akan menampilkan tab sebagai
\t
, dan spasi sebagai spasi.sumber
grep
tidak berhasil, maafCoba alternatif grep yang disebut sift from sift-tool.org - grep pada steriod yang melakukan pencocokan pola regex cerdas
sumber