Назад | Перейти на главную страницу

sed заменить косую черту

я использую

!/bin/bash
     for fl in *.txt; do
     mv $fl $fl.old
     sed 's/files.php?file=/file/g' $fl.old > $fl
     rm -f $fl.old
     done

Мне нужно, чтобы вывод был заменен файлом / не только файлом, не могу понять

Ты можешь использовать # или | вместо того / чтобы облегчить жизнь при использовании слэшей в узорах:

!/bin/bash
     for fl in *.txt; do
     mv $fl $fl.old
     sed 's#files.php?file=#file/#g' $fl.old > $fl
     rm -f $fl.old
     done

Это избавляет вас от необходимости избегать всех косых черт, которые вы хотите сопоставить или использовать в качестве замены, например \/

Также, чтобы прояснить:

/ косая черта

\ это обратная косая черта

Вы можете использовать экранирование обратной косой черты:

sed 's/files.php?file=/file\//g' $fl.old > $fl

И это даст желаемый результат.

Вам не нужно использовать / с sed вы можете использовать что-то еще, например # или |

sed 's#files.php?file=#file/#g'

или

sed 's|files.php?file=|file/|g'

Использование:

sed 's/files.php?file=/file\//g;' $fl.old > $fl

Обратите внимание на \ используется, чтобы избежать / после file в замене ...