Вот действительно хороший постер от Microchip, который объясняет, как подключить ICD2.
Но имейте в виду, что ICD2 действительно старый и иногда немного хитрый. Новый ICD4 проще в использовании, а также намного быстрее.
Если вы хотите работать с заголовком, взгляните на этот документ . Он также включает в себя список доступных заголовков. Я не уверен, есть ли заголовок для PIC18 для ICD2.
Bash/sed:
VARIABLE=$(tr -d '\n' filename | sed -n -e '/\[[^]]/s/^[^[]*\[\([^]]*\)].*$/\1/p')
Если это нечитабельно, вот определенное объяснение:
VARIABLE=`subexpression` Assigns the variable VARIABLE to the output of the subexpression.
tr -d '\n' filename Reads filename, deletes newline characters, and prints the result to sed's input
sed -n -e 'command' Executes the sed command without printing any lines
/\[[^]]/ Execute the command only on lines which contain [some text]
s/ Substitute
^[^[]* Match any non-[ text
\[ Match [
\([^]]*\) Match any non-] text into group 1
] Match ]
.*$ Match any text
/\1/ Replaces the line with group 1
p Prints the line
Позвольте мне указать, что, в то время как большинство предложенных решений могло бы работать, нет абсолютно никакой причины, почему необходимо разветвить другую оболочку и породить несколько процессов, чтобы сделать такую простую задачу.
Оболочка предоставляет Вам все инструменты, в которых Вы нуждаетесь:
$ var='foo[bar] pinch'
$ var=${var#*[}; var=${var%%]*}
$ echo "$var"
bar
Sed не необходим:
var=`egrep -o '\[.*\]' FILENAME | tr -d ][`
Но это - только работы с однострочными соответствиями.
Используя Bash встроенное соответствие regex походит на еще один способ сделать его:
var='foo[bar] pinch'
[[ "$var" =~ [^\]\[]*\[([^\[]*)\].* ]] # Bash 3.0
var="${BASH_REMATCH[1]}"
echo "$var"
Принятие Вас спрашивает о переменной удара:
$ export YOUR_VAR=$(perl -ne'print $1 if /\[(.*?)\]/' your_file.txt)
Вышеупомянутые работы, если скобки находятся на той же строке.
Что относительно:
shell_variable=$(sed -ne '/\[/,/\]/{s/^.*\[//;s/\].*//;p;}' $file)
Работавший для меня на Солярисе 10 под оболочкой Korn; должен работать с Bash также. Замена'$(...)
'с обратными галочками в Оболочке Bourne.
Править: работавший при предоставлении [на одной строке и] на другом. Для однострочного случая также, используйте:
shell_variable=$(sed -n -e '/\[[^]]*$/,/\]/{s/^.*\[//;s/\].*//;p;}' \
-e '/\[.*\]/s/^.*\[\([^]]*\)\].*$/\1/p' $file)
Первое'-e
'соглашения с многострочным распространением; второе'-e
'соглашения с однострочным случаем. Первое'-e
'говорит:
[
не сопровождаемый закрывающей квадратной скобкой ]
на той же строке]
,Второе'-e
'говорит:
Для многострочного случая:
$ file=xxx
$ cat xxx
sdsajdlajsdl
asdajsdkjsaldjsal
sdasdsad [aaaa
bbbbbbb
cccc] asdjsalkdjsaldjlsaj
asdjsalkdjlksjdlaj
asdasjdlkjsaldja
$ shell_variable=$(sed -n -e '/\[[^]]*$/,/\]/{s/^.*\[//;s/\].*//;p;}' \
-e '/\[.*\]/s/^.*\[\([^]]*\)\].*$/\1/p' $file)
$ echo $shell_variable
aaaa bbbbbbb cccc
$
И для однострочного случая:
$ cat xxx
sdsajdlajsdl
asdajsdkjsaldjsal
sdasdsad [aaaa bbbbbbb cccc] asdjsalkdjsaldjlsaj
asdjsalkdjlksjdlaj
asdasjdlkjsaldja
$
$ shell_variable=$(sed -n -e '/\[[^]]*$/,/\]/{s/^.*\[//;s/\].*//;p;}' \
-e '/\[.*\]/s/^.*\[\([^]]*\)\].*$/\1/p' $file)
$ echo $shell_variable
aaaa bbbbbbb cccc
$
Где-нибудь о здесь, становится более просто сделать целое задание в Perl, хлебая файл и редактируя строку результата в двух многострочных операциях замены.
var=`grep -e '\[.*\]' test.txt | sed -e 's/.*\[\(.*\)\].*/\1/' infile.txt`
Обратные косые черты (BSL) громко жевались...:
var='foo[bar] pinch'
[[ "$var" =~ [^\]\[]*\[([^\[]*)\].* ]] # Bash 3.0
# Just in case ...:
[[ "$var" =~ [^BSL]BSL[]*BSL[([^BSL[]*)BSL].* ]] # Bash 3.0
var="${BASH_REMATCH[1]}"
echo "$var"
Благодаря всем я использовал версию Strager и работаю отлично, большое спасибо еще раз...
var=`grep -e '\[.*\]' test.txt | sed -e 's/.*\[\(.*\)\].*/\1/' infile.txt`
2 простых шага для извлечения текста.
cb0$ var='foo[bar] pinch' cb0$ var=${var#*[} cb0$ var=${var%]*} && echo $var bar