csh: изменение пути при неинтерактивном входе в систему

Aquí hay una forma de manejar su problema particular:

find. -maxdepth 1 -type f -name "profiles*.csv" ! -name "profiles00.csv" -exec sed -i -e '1!b' -e 'R profiles00.csv' -e 'N' {} +

Escrito presentado en forma de -líneas múltiples como:

find. -maxdepth 1 \
    -type f \
    -name "profiles*.csv" ! -name "profiles00.csv" \
    -exec sed -i -e '1!b' \
                 -e 'R profiles00.csv' \
                 -e 'N' \
     {} +

para ser leído como:encontrar utilidad deberá

  • -maxdepth 1=> caminar solo en el directorio actual, normalmente recurre hasta la jerarquía más baja.

  • -type f=> mientras camina, seleccione solo los archivos regulares.

  • -name "profiles*.csv" ! -name "profiles00.csv"=> de todos los archivos regulares, seleccione solo aquellos que tienen perfiles *.csv como sus nombres base Y filtre el archivo "profiles00.csv" ya que este es el archivo de encabezado.

  • -exec sed -i -e '1!b' -e 'R profiles00.csv' -e 'N' {} +

  • -iopción => editar archivos en lugar GNU sed asumido

  • -eopción => sigue el código sed

    • 1!b=> no toques las primeras líneas que no sean -.

    • R profiles00.csv=> leer una línea (ya que es la primera vez, será la primera línea )del archivo profiles00.csv. Entonces, esencialmente, el encabezado se extrae del archivo profiles00.csv. Pero no impreso todavía.

    • N=> Lea la siguiente línea en el espacio del patrón. esto vacía el búfer de lectura y después de eso, el espacio del patrón real se vacía (líneas 1,2 )del archivo actual que está siendo operado por sed.

  • {} +hará que encuentre proporcione los múltiples archivos que ha seleccionado de una sola vez a la utilidad sedy GNU sed es capaz de manejar múltiples archivos con la opción -i. Específicamente, los números de línea se restablecen para la lectura de un nuevo archivo.

≠================ Vía positiva ======

 LC_ALL=C  \
 find. ! -name. -prune -type f  \
     -name 'profiles??*.csv'      \
   ! -name 'profiles*[!0-9]*.csv' \
   ! -name 'profiles00.csv'       \
     -exec sh -c '
              shift "$1"
              head -n 1 < profiles00.csv > header
              for arg do
                 printf "0r header\\nw\\nq\\n" | ed -s "$arg"
              done
          ' 2 1 {} +

Aquí prescindimos de sed y recurrimos al ed.

  • 0r => insertará el contenido del archivo mencionado, al principio del archivo editado por ed.
  • w => escribirá en el archivo, congelando así todos los cambios realizados.
  • q => saldrá del editor de edición.
0
20.06.2019, 20:12
1 ответ

Похоже, мой /bin/cshна самом деле tcsh, и даже когда он вызывается как /bin/csh, он думает, что должен читаться как .tcshrc(, что сбивает меня с толку :, если я позвоню csh, я ожидаю получить cshнеtcsh).

Удаление .tcshrcзаставило его уважать .cshrc(, но не.login).

0
28.01.2020, 03:32

Теги

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