Cara tercepat dan termudah yang saya tahu untuk mengatasi masalah ini:
Saat kami ingin mengganti karakter baris baru \n
dengan spasi :
xargs < file
xargs
memiliki batas sendiri pada jumlah karakter per baris dan jumlah semua karakter yang digabungkan, tetapi kita dapat meningkatkannya. Detail dapat ditemukan dengan menjalankan perintah ini: xargs --show-limits
dan tentu saja dalam manual:man xargs
Saat kami ingin mengganti satu karakter dengan yang lainnya tepat satu karakter :
tr '\n' ' ' < file
Saat kami ingin mengganti satu karakter dengan banyak karakter :
tr '\n' '~' < file | sed s/~/many_characters/g
Pertama, kami mengganti karakter baris baru \n
untuk tildes ~
(atau memilih karakter unik lain yang tidak ada dalam teks), dan kemudian kami mengganti karakter tilde dengan karakter lain ( many_characters
) dan kami melakukannya untuk setiap tilde (bendera g
).
sed
skrip Anda dalam tanda kutip tunggal sehingga Bash tidak mengacaukannya (karenased s/\n/ /g
panggilansed
dengan dua argumen, yaitus/n/
dan/g
); (2) karena Anda ingin outputcat file | grep pattern
menjadi masukan untuksed
, bukan argumen untuksed
, Anda perlu menghilangkanxargs
; dan (3) tidak perlu untuk dicat
sini, karenagrep
dapat menggunakan nama file sebagai argumen kedua. Jadi, Anda harus mencobagrep pattern file | sed 's/\n/ /g'
. (Dalam hal ini itu tidak akan berhasil, untuk alasan yang diberikan pada tautan di atas, tetapi sekarang Anda tahu untuk masa depan.)