SED komutuyla ilgili bir sorunum var @ karakterini bir dizeyle değiştirmem ve csv dosyasındaki bir sütuna bir dize eklemem gerekiyor
Yani
foo@example.com
Olacaktı
foo_X_example.com@newdomain.com
Aşağıdaki sed komutunu kullanıyorum
sed -i .bak -E 's/([^,\n\“]*)@([^,\n\“]*)/\1_X_\2@newdomain.com/' Test.csv
Ama komutta bir yerde yeni bir satır sonu var.
foo_X_exxample.com
@newdomain.com
SED komutumdaki hatanın nerede olduğunu bilen var mı?
sed -i .bak -E 's/([^,\r\n\“]*)@([^,\r\n\“]*)/\1_X_\2@newdomain.com/' Test.csvmi Bu çözmeli. Bana haber ver, bir cevap vereceğim.
foo@example.comCR / LF ile takip eden bir dosya oluşturarak denedim ve tamam işe yaradı, \rarama alanlarında olmadan önce geri dönüş karakterini korudu @. Diğer seçeneğiniz, dos2unixdosyayı kullanmadan önce dosyadaki yardımcı programı kullanmaktır sed, ancak ilk yöntemin aksine bu, Windows dosya biçimini kaybeder. Ubuntu Linux kullanıyorum, ancak Linux tabanlı olmasına rağmen Mac OS'niz farklı bir son satır sırası kullanıyor olabilir.
\reşleşmeyen karakterlere ekleyin .