/usr/lib/dracut/skipcpio $your-initrd-img | zcat | cpio -id --no-absolute-file-names
или еще
/usr/lib/dracut/skipcpio $your-img | gunzip -c | cpio -id
(во FreeBSD нет опции --no-absolute-file-names для cpio)
Эта небольшая программа skipcpio
, если она является частью пакета dracut. Но вы можете скачать код (skipcpio.c) и скомпилировать его даже под FreeBSD.
Это необходимо при извлечении образов initrd, созданных dracut, по крайней мере, в дистрибутивах на базе RedHat, таких как Fedora. Он помещает в образ файл с именем "early_cpio", поэтому извлечение initramfs обычным способом, известным ранее, не сработает.
Используйте форму модификатора if
:
perl -ne 's/stuff/changed/, print if /patternmatch/'
or, вы можете использовать and
и or
для управления потоком:
perl -ne '/patternmatch/ and s/stuff/changed/, print'
user@unix:~$ echo 'abc' | sed 's/abc/xyz/'
xyz
user@unix:~$ echo 'abc' | perl -pe 's/abc/xyz/'
xyz
user@unix:~$ echo 'abc' > file.txt && cat file.txt
abc
user@unix:~$ sed 's/abc/xyz/' file.txt
xyz
user@unix:~$ perl -pe 's/abc/xyz/' file.txt
xyz
user@unix:~$ echo 'patternmatch' | sed 's/patternmatch/stuffchanged/'
stuffchanged
user@unix:~$ echo 'patternmatch' | perl -pe 's/patternmatch/stuffchanged/'
stuffchanged
user@unix:~$ echo 'patternmatch' > file.txt && cat file.txt
patternmatch
user@unix:~$ sed 's/patternmatch/stuffchanged/' file.txt
stuffchanged
user@unix:~$ perl -pe 's/patternmatch/stuffchanged/' file.txt
stuffchanged