Saya menggunakan baris perintah Linux dan saya memiliki file dengan
127.0.0.1
128.0.0.0
121.121.33.111
saya ingin
127.0.0.1:80
128.0.0.0:80
121.121.33.111:80
Saya ingat rekan-rekan saya menggunakan sed untuk itu, tetapi setelah membaca manual sed masih belum jelas bagaimana melakukannya pada baris perintah?
Jawaban:
Anda dapat mencoba menggunakan sesuatu seperti:
Asalkan format file Anda sama seperti yang Anda jelaskan dalam pertanyaan Anda.
The
s///
perintah substitusi pertandingan ( temuan ) akhir setiap baris dalam file Anda (menggunakan$
karakter) dan kemudian menambahkan ( Menggantikan ) yang:80
ke akhir setiap baris. Theips.txt
file file input Anda ... dannew-ips.txt
adalah file Anda yang baru dibuat ( hasil akhir dari perubahan. )Juga, jika Anda memiliki daftar nomor IP yang kebetulan memiliki nomor port yang terpasang, (seperti yang dicatat oleh Vlad dan seperti yang diberikan oleh aragaer ,) Anda dapat mencoba menggunakan sesuatu seperti:
Jadi, misalnya, jika file input Anda terlihat seperti ini (perhatikan
:80
) :Hasil akhirnya akan terlihat seperti ini:
sumber
sed '/:[0-9]*$/ ! s/$/:80/'
:80
akan ditambahkan ke awal baris berikut. Gunakandos2unix
pada file tersebut terlebih dahulu jika perlu.-n
perlu? mungkin tidak untuk sebagian besar pengguna.Versi ringkas dari perintah sed :
Penjelasan:
sed
s tream ed itor-i
i n-place (edit file di tempat)s
s perintah ubstitution/replacement_from_reg_exp/replacement_to_text/
pernyataan$
cocok dengan akhir baris ( replacement_from_reg_exp ):80
teks yang ingin Anda tambahkan di akhir setiap baris ( replacement_to_text )file.txt
nama filesumber
sumber
Jika Anda ingin menambahkan teks di akhir setiap baris di tempat (dalam file yang sama), Anda dapat menggunakan
-i
parameter, misalnya:Namun
-i
pilihannya adalah ekstensi Unix non-standar dan mungkin tidak tersedia di semua sistem operasi.Jadi, Anda dapat mempertimbangkan untuk menggunakan
ex
(yang setara denganvi -e
/vim -e
):yang akan ditambahkan
:80
ke setiap baris, tetapi terkadang dapat menambahkannya ke baris kosong.Jadi metode yang lebih baik adalah memeriksa apakah baris tersebut benar-benar berisi nomor apa pun, dan kemudian menambahkannya, misalnya:
Jika file memiliki format yang lebih kompleks, pertimbangkan untuk menggunakan regex yang tepat, daripada
[0-9]
.sumber
Menggunakan editor teks, periksa
^M
(control-M, atau carriage return) di akhir setiap baris. Anda harus menghapusnya terlebih dahulu, lalu menambahkan teks tambahan di akhir baris.sumber
Anda juga dapat melakukannya dengan menggunakan teknik referensi latar
Anda juga bisa menggunakan dengan awk seperti ini
sumber
sed -i 's / $ /, / g' foo.txt
Saya melakukan ini cukup sering untuk menambahkan koma di akhir output sehingga saya dapat dengan mudah menyalin dan menempelkannya ke array Python (atau fav lang Anda)
sumber