tr
має справу з окремими персонажами, вона насправді не стосується рядків, хоча є перекриття.
ви можете замінити кілька випадків одного символу, одним випадком (Заміна \\
на \
), варіантом, який він називає "зменшити", але ви хочете іншим способом. Теоретично можна сказати, що такий же персонаж залучає так само багато, тим не менш, tr не може цього зробити, він не має можливості надати йому характер і вказати, скільки разів він повинен з'являтися. У ньому є варіант зменшення символів, але не варіант повторення символів.
Ви можете використовувати sed, можливо, вам доведеться використовувати одинарні лапки, а не подвійні лапки
$ echo '\' | sed 's_\\_\\\\_g'
\\
або sed 's/a/b/g' filename
синтаксис sed з його командою s, є, sed "s/find/replace/"
а якщо встановити g
модифікатор в кінці, то переконайтеся, що він не просто зупиняється на першому, він замінює кожне виникнення. sed 's/find/replace/g'
Зазвичай люди використовують / Ви можете використовувати _ тобто s_a_b_g
ви не ставите a / після g.
Щодо того, \r\n
і \n
ця лінія sed не вплине на неї. \r\n
не зберігається з фактичною зворотною косою рисою, вона зберігається з двійковим кодом ASCII, який вона представляє. 13 для \r
і 10 для \n
перегляду таблиці ascii, і ви це побачили.
$ cat ff | sed "s_\\_\\\\_g"
sed: -e expression #1, char 8: unterminated
s 'команда', але працює з одинарними цитатами.