На ваш комментарий, да, я понимаю об отладке с помощью этого метода, и это было мое предположение.
Это почти так же просто, и не требует шага очистки позже, чтобы переместить заключительные строки и"'" символ вверх и вниз по списку, как показано ниже, для отладки (в качестве альтернативного решения).
j=$(
echo "$j" \
| sed '
s/\///g
s/_/ /g
s/^\.//
s/\[[^()]*\]//g
s/([^()]*)//g
s/#//g
s/+/\ /g
s/\.\././g
s/\&/and/g
s/\ -/-/g
s/-\ /-/g
s/-{2,}/-/g
s/\.\././g
s/'"'"'//g
s/ {2,}/ /g
s/\ \././g
' \
| awk '/[0-9]/{
match( $0,/[0-9][0-9]*/ )
begin=substr($0,1,RSTART); end=substr($0,RSTART+RLENGTH,length($0))
num=substr($0,RSTART,RSTART+RLENGTH)
printf("%s%03d%s", begin,num+0, end)
}'
)
Редактировать Может быть возможно удвоить тройку на экранированных одинарных кавычкахто есть \\'
или \\\'
, но я иду с проверенным и верным s/'"'"'//g
.
Если вы не используете оригинальную оболочку Bourne в Solaris, AIX, HP или других старых версиях Unixen, присоединяйтесь к 1990-м годам ;-) и используйте конструкцию $( ...)
для подстановки команд.Обратные кавычки устарели, по крайней мере, в «Новом языке программирования Kornshell», опубликованном в 1995 году.
Надеюсь, это поможет.