Рассмотрим следующий код:шаблон согласования с использованием переменной в SED
pattern="*.some_pattern.*"
orignalLogFile='sample.log'
outputFile='1.txt'
temp='1.log'
# match the pattern and replace with a new line
sed 's/'$pattern'/\n/' $orignalLogFile > $temp
Бросок
'СЭД: -e выражение # 1, символ 9: незакрытых `S' команда»
Как решить эту проблему?
Использование прямого рисунка без использования его в переменной отлично работает. sed принимает заменяющие символы новой строки для рисунка sed /./pattern_logo. */\ n/'sample.log> newLog.txt Это прекрасно работает. Вероятно, когда у меня есть «patterntomatch» в переменной. – user170008
Это может сработать для GNU sed в Linux, да; но это не совместимо с POSIX и, следовательно, не переносимо. Решение, которое я дал вам работы для FreeBSD, поэтому переносится; он будет работать с OSX и, предположительно, с любой другой UNIX. Утилиты GNU имеют расширения, которые нарушают стандарт POSIX; это одна большая причина, по которой я не пишу сценарии под Linux. Кроме того, вы можете обойти переменную, не работающую с sed, поставив ее в двойные кавычки, а не в сингл, как у меня там. – petrus4