Saya memiliki skrip yang menampilkan teks berikut. Ini adalah output dari modem Netopia 2210-02 ADSL2 .
ADSL Line State: Up
ADSL Startup Attempts: 1
ADSL Modulation: DMT
ADSL Data Path: Fast
Datapump Version: DSP 7.2.3.0, HAL 7.2.1.0
SNR Margin: 8.20 9.00 dB
Line Attenuation: 57.50 31.00 dB
Output Power: 17.09 12.34 dBm
Errored Seconds: 0 0
Loss of Signal: 0 476
Loss of Frame: 0 0
CRC Errors: 57921 416
Data Rate: 2880 1024
Bagaimana saya bisa menghapus karakter end-of-line untuk setiap baris? Saya ingin output terlihat seperti ini (Ya jelek):
ADSL Line State: Up ADSL Startup Attempts: 1 ADSL Modulation: DMT ADSL Data Path: Fast Datapump Version: DSP 7.2.3.0, HAL 7.2.1.0 SNR Margin: 8.20 9.00 dB Line Attenuation: 57.50 31.00 dB Output Power: 17.09 12.34 dBm Errored Seconds: 0 0 Loss of Signal: 0 476 Loss of Frame: 0 0 CRC Errors: 57921 416 Data Rate: 2880 1024
Saya mencoba beberapa solusi seperti ini, tetapi mereka tidak berhasil:
# (This simply outputs the contents of the script, unmodified)
stefanl@hosta:~/Work/Cacti $ ./script | sed -e 's/$//'
Saya juga mencoba menggunakan tr
. Saya mengharapkan perintah berikut untuk mengganti setiap karakter baris baru dengan karakter spasi. Ini akan mengambil banyak garis dan menggabungkannya menjadi satu garis panjang. Sebaliknya, ini hanya menampilkan garis keluaran terakhir. Tampaknya untuk menimpa setiap baris berikutnya dengan garis output berikutnya.
stefanl@hosta:~/Work/Cacti $ ./script | tr '\n' ' '
Data Rate: 2880 1024stefanl@hosta:~/Work/Cacti $
stefanl@hosta:~/Work/Cacti $
Perbarui :
Setelah pemeriksaan lebih lanjut, sepertinya setiap baris didahului oleh karakter kembali. Ini muncul ^M
saat menggunakan less
. Jadi, saya menambahkan dua tr
pernyataan. Satu untuk menghapus karakter baris baru, satu untuk menghapus karakter kembali.
./script | | tr -d '\n' | tr -d '\r'
sumber
tr '\n' ' '
dantr -d '\n'
akan membungkus garis dengan cara yang aneh. Saya memperbarui pertanyaan saya untuk menunjukkan hasilnya. Jadi, mungkin saya perlu menggunakantr
, tapi saya hanya perlu mencari tahu bagaimana menggunakannya dengan benar.tr '\n' ' '
untuk menghapus karakter baris baru dan menggantinya dengan karakter spasi, dan karenanya memiliki satu garis panjang.selain itu
tr
, beberapa metode lain dapat Anda gunakanawk
kulit
sed
sumber
Gunakan
tr -s '\n'
untuk mengganti urutan karakter baris baru yang diulang dengan kejadian baris baru.Contoh:
(lihat
man tr
)sumber
Untuk menghapus karakter baris baru, itu
tr -d '\n' < file
. Namun, untuk bergabung dengan semua lini, itupaste -sd '\0' file
.tr -d '\n'
menghasilkan output non-teks karena tidak mengakhiri satu baris dengan karakter baris baru.Untuk menghapus, semua karakter CR, Anda dapat melakukan:
Untuk hanya menghapus karakter CR yang ada di akhir baris:
Atau gunakan
awk
untuk semuanya:Atau gunakan
dos2unix
(yang akan menghapus CR yang mengekor dan juga memperbaiki beberapa masalah lain dengan file teks dari Microsoft OS):sumber