Ringkasan cara menggunakan arahan sed dalam linux
Arahan Sed dalam linux:
1 Pengenalan pertama kepada sed
Editor sed dipanggil editor aliran Ia berbeza daripada editor teks interaktif seperti vim Ia memproses data dalam aliran data mengikut arahan. Operasi berikut akan dilakukan:
Baca satu baris data daripada input pada satu masa (ulang operasi ini sehingga semua baris telah dibaca)
Menurut data padanan arahan Editor
Ubah suai data dalam aliran data mengikut arahan
Output data baharu kepada STDOUT (output standard)
Arahan sed boleh dimasukkan daripada baris arahan atau dibaca daripada fail arahan.
sed -e script 添加script中指定的命令 sed -f file 添加file中指定的命令
1.1 Tentukan arahan sed pada baris arahan [Pembelajaran yang disyorkan: tutorial video linux]
Mari kita lihat contoh penggantian teks ringkas:
echo "hi,my name is xxx" | sed 's/xxx/kinsomy/' #修改文件 sed 's/xxx/kinsomy/' data.txt #执行多个命令 用-e选项,分号隔开 sed 's/xxx/kinsomy/; s/***/hhh/' data.txt
Masukkan data output gema ke dalam sed melalui saluran paip, dan kemudian gunakan arahan s untuk menggantikannya, menggantikan data padanan selepas garis miring pertama dengan data selepas garis miring kedua.
Nota: sed mengendalikan data dalam fail teks dan hanya mengeluarkan data yang diubah suai kepada STDOUT, tetapi tidak mengubah suai data fail itu sendiri
1.2 Baca arahan daripada fail
Tentukan satu siri arahan dalam skrip fail.sed untuk kegunaan semula yang mudah.
s/*/a s/x/b s/-/+
# -f选项指定命令文件 sed -f script.sed data.txt
Asas 2 sed
2.1 Teg gantian
Contoh di atas bergema "hai, nama saya xxx" | 's/xxx/kinsomy/' hanya akan menggantikan data dipadankan pertama dalam setiap baris, tetapi jika terdapat berbilang padanan dalam baris data, kesemuanya tidak boleh diganti.
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/' #输出 hi,my name is kinsomy, i am xxx
Pada masa ini, anda boleh menggunakan beberapa bendera penggantian untuk menetapkan mod penggantian. Token gantian mengikut rentetan gantian.
s/pattern/replacement/flags
Nombor, yang menunjukkan data yang sepadan akan digantikan
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2' #输出 第二个xxx被替换成kinsomy hi,my name is xxx, i am kinsomy
g, menunjukkan penggantian semua data yang dipadankan
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g' #输出 第二个xxx被替换成kinsomy hi,my name is kinsomy, i am kinsomy
p, bermakna bahawa. baris yang dipadankan akan dicetak
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p' #输出 hi,my name is kinsomy, i am xxx hi,my name is kinsomy, i am xxx
w,将替换后输出保存到指定文件 echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'
2.3 Pengalamatan baris
Seperti yang dinyatakan di atas, arahan sed membaca teks baris demi baris , lakukan data operasi yang sepadan sehingga semua baris selesai dilalui. Jika kita ingin beroperasi pada baris tertentu pada masa ini, kita mesti menggunakan pengalamatan baris. Terdapat dua bentuk pengalamatan baris:
Borang berangka mewakili baris
# 操作单行 $ sed '2s/xxx/***/' data.txt # 操作一定行区间[2,4] $ sed '2,4s/xxx/***/' data.txt # 操作某行开始到最后[2,endline] $ sed '2,$s/xxx/***/' data.txt
Penapis mod teks
Mula-mula cari rekod kinsomy dalam /etc/passwd, Kemudian gantikan bash dengan csh. Penapis corak teks boleh menjadi sangat berkuasa apabila dipasangkan dengan ungkapan biasa.
sed '/kinsomy/s/bash/csh/' /etc/passwd
2.4 Padam baris
Gunakan perintah padam d untuk memadam teks.
# 删除所有文本 sed 'd' data.txt # 删除单行 sed '2d' data.txt # 删除行区间[2,3] sed '2,3d' data.txt # 删除行区间[2,endline] sed '2,$d' data.txt # 删除匹配文本aa的行 sed '/aa/d' data.txt # 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除 sed '/1/,/3/d' data.txt
2.5 Sisipkan dan tambah teks
Sisipkan arahan i menambah baris baharu sebelum baris yang ditentukan
Tambah perintah a menambah baris baharu selepas baris yang ditentukan
# 追加 echo "Line 2" | sed 'a\ pipe quote> Line 1' #插入 echo "Line 2" | sed 'i\ pipe quote> Line 1'
2.6 Ubah suai baris
Arahan c digunakan untuk mengubah suai baris data
# 修改第三行文本 sed '3c\ pipe quote> change line ' data.txt
2.7 Perintah penukaran
Format perintah sed ' y/inchar/outchar'
Tukar aksara dalam inchar kepada outchar aksara satu persatu
echo "This 1 is a test of 1 try." | sed 'y/123/456/' # 输出 This 4 is a test of 4 try.
Atas ialah kandungan terperinci Ringkaskan penggunaan arahan sed dalam Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!