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.csv
mi Bu çözmeli. Bana haber ver, bir cevap vereceğim.
foo@example.com
CR / LF ile takip eden bir dosya oluşturarak denedim ve tamam işe yaradı, \r
arama alanlarında olmadan önce geri dönüş karakterini korudu @
. Diğer seçeneğiniz, dos2unix
dosyayı 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.
\r
eşleşmeyen karakterlere ekleyin .