sed неуклюже, но вот что я мог получить -
sed 's/.*\(Apple\)[^:]*:"\([0-9]*\)".*/Enter product ID: \1\nYour product ID is: \2/' 3
Enter product ID: Apple
Your product ID is: 2134
sed 's/.*\(Mango\)[^:]*:"\([0-9]*\)".*/Enter product ID: \1\nYour product ID is: \2/' 3
Enter product ID: Mango
Your product ID is: 4567
Отредактировано на основе последних данных, которые немного отличаются
./prod.sed Apple
Enter product ID: Apple
Your product ID is: 1234
./prod.sed Mango
Enter product ID: Mango
Your product ID is: 12345
prod.sed (use 3rd line for publishName)
#sed 's/.*product_id":"\(Apple\).*"productBuildId":"\([0-9]*\)".*/Enter product ID: \1\nYour product ID is: \2/' data
sed 's/.*product_id":"\('"$1"'\).*"productBuildId":"\([0-9]*\)".*/Enter product ID: \1\nYour product ID is: \2/' data
sed 's/.*product_id":"\('"$1"'\)","publishName":"\([^"]*\)".*/Enter product ID: \1\nYour publish ID is: \2/' data
explanation : substitute the string <anything> Mango <anything other than :> : <number> with -> Your product ID is: Mango <next line>
Your product ID is : <the number we got>
\1 and \2 save the matched expression in \(..\) for later use.
mount /dev/loop0p2 /mnt/target
cd /mnt/target/home/
mount /dev/loop0p3 /mnt/target/home/
mkdir -p /mnt/target/home/user/resources
Вы вызываете mkdir
с рабочим каталогом, установленным на /home
на /dev/loop0p2
. Этот рабочий каталог раньше был доступен по пути /mnt/target/home
, но теперь он скрыт за точкой монтирования для /dev/loop0p3
. Когда вы вызываете mkdir
, путь /mnt/target/home
указывает на каталог /
на /dev/loop0p3
.
Не понимаю, зачем mkdir
заботиться о своем рабочем каталоге, но это выглядит странно. Если вы упростили свой сценарий, прежде чем показывать его в своем вопросе, проблема, с которой вы столкнулись, вполне может быть связана с путаницей из-за каталога, скрытого за точкой монтирования.
Так что попробуйте cd
выйти из /mnt/target/home
перед установкой. Или вообще не используйте cd
и используйте опцию -C
для вызова tar
и абсолютный путь для rm
.
Как правило, избегайте монтирования чего-либо в каталог, который используется каким-либо образом. Целевой каталог должен быть пустым и не должен быть рабочим каталогом какого-либо процесса. Операционная система будет поступать правильно, но то, что она считает правильным, может оказаться неожиданным, и в любом случае это может запутать людей и программное обеспечение.