Grep: разделить вывод на два столбца и сохранить их в файл txt

No lea todo el archivo apps.txten un bucle for. En el caso general, esto podría causar problemas de memoria si el archivo es enorme, y podría causar problemas si algún nombre de archivo en apps.txttuviera espacios. No repita la salida de ls. Además, cite expansiones de variables y use printfpara generar datos variables.

Relacionado:

Sugerencia:

#!/bin/sh

appdir='/local/apps/oracle/Middleware/user_projects/epmsystem1/EssbaseServer/essbaseserver1/app'
outdir='/data/shellscripts/essbase/Operate/Overlays'

while IFS= read -r app; do
    printf '%s\n' "$app"
    for name in "$appdir/$app"/*.rul; do
        printf '%s\n' "${name##*/}"
        strings "$name"
    done
done "$outdir/rules1.txt"

Esto leería appdel archivo apps.txty accedería a todos los archivos *.rulen el subdirectorio correspondiente bajo $appdir. Las cadenas $appy ${name##*/}(, el nombre base del archivo *.rulactual ), se generarían en cada iteración, junto con la salida de strings. La salida iría al archivo $outdir/rules1.txt.

También relacionado (con mi solución):

1
27.07.2019, 12:49
1 ответ

Существует некоторое отвращение к синтаксическому анализу вывода ls (см.https://mywiki.wooledge.org/ParsingLsсреди прочих ), но это в стороне:

ls -d -- 0.*_*.txtЯ не знаю, почему вы поставили --там; -dпросто мешает вам спускаться в каталоги. В вашем наборе -вам, вероятно, не понадобится ни то, ни другое.

lsбудет генерировать имена файлов, такие как 0.230_0.203059.txt, поэтому с txt. Вам нужно будет раздеть и это.

ls 0.*_*.txt | sort -t. -k1 | sed 's/.txt//;s/_/ /' > outfile.txt

должен сделать это.

1
27.01.2020, 23:41

Теги

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