Вставить несколько строк перед определенной строкой с помощью команды sed

Ваша оболочка попыталась и не смогла выполнить оболочку, указанную в первой (shebang) строке cryptest.sh. Он смог найти ksh, который смог выполнить ваш сценарий.

4
25.02.2018, 20:28
2 ответа

Puede solucionar los problemas de /en el texto del patrón utilizando un delimitador diferente como #, p.

sed '\#^</fontconfig>#i\
  <dir>/usr/local/texlive/texmf-local</dir>\
  <dir>/usr/local/share/fonts</dir>
' file
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/opentype</dir>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/truetype</dir>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/type1</dir>
  <dir>/usr/local/texlive/texmf-local</dir>
  <dir>/usr/local/share/fonts</dir>
</fontconfig>
1
27.01.2020, 20:49

No use sed, awky similares para analizar datos XML/HMTL -nunca llegará a un resultado robusto y escalable. Utilice procesadores XML/HTML adecuados.
El camino correcto con la herramientaxmlstarlet:

xmlstarlet ed -s '//fontconfig' -t elem -n 'dir' -v '/usr/local/texlive/texmf-local' \
-s '//fontconfig' -t elem -n 'dir' -v '/usr/local/share/fonts' input.xml

La ​​salida:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/opentype</dir>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/truetype</dir>
  <dir>/usr/local/texlive/2017/texmf-dist/fonts/type1</dir>
  <dir>/usr/local/texlive/texmf-local</dir>
  <dir>/usr/local/share/fonts</dir>
</fontconfig>

Para modificar/editar el archivo en -lugar-agregar -Lopción:xmlstarlet ed -L....


Para más detalles escriba:xmlstarlet ed --help

7
27.01.2020, 20:49

Теги

Похожие вопросы