Bash - печатать первую строку текстового файла (csv) жирным шрифтом

$ touch file
$ ls
file
$ hash
hits    command
   1    /usr/bin/touch
   1    /bin/ls
$ hash -p /hello/world/ls ls
$ ls
bash: /hello/world/ls: No such file or directory

hash -p somepath somecommandestablece la ruta hash para somecommanda la ruta dada somepathen bash.

Por lo general, esto no lo ayudará a invertir el orden de búsqueda PATHentre dos directorios, ya que tendría que usar hash -pen todos los archivos binarios que se encuentran en ambos directorios. Si solo tiene uno de esos binarios, puede ser una opción viable. Una solución más portátil sería simplemente anteponer el valor de PATHcon el segundo directorio.

Si su original PATHes

/path/1:/path/2:...

primero lo conviertes en

/path/2:/path/1:/path/2:...

luego use hash -rpara restablecer las rutas codificadas y use los binarios como de costumbre. Estos ahora serán recogidos desde /path/2en lugar de desde /path/1.

Si guarda el original PATHen una variable temporal, es fácil de restaurar.

Resumen:

oldpath=$PATH
PATH=/path/2:$PATH
hash -r

# do stuff

PATH=$oldpath
hash -r
1
11.05.2019, 21:37
2 ответа

Я полагаю, вы могли бы использовать awkдля этого:

column -s\; -t file | awk -v bld=$(tput bold) -v rst=$(tput sgr0) 'NR == 1{$0 = bld$0rst} 1'

Это сделает первую строку столбца жирным шрифтом

2
27.01.2020, 23:22

Еще одно решение, использующее sedи экранирование ANSI с использованием регулярного выражения Стивена Харриса:

<file sed "1s/\(.*\)/\x1b[1m\1\x1b[0m/" | column -s\; -t

где \x1b— шестнадцатеричное значение восьмеричного числа \033, которое используется в escape-последовательности ANSI, например

printf '\033[1m%s\033[0m\n' hello
# or
printf '\x1b[1m%s\x1b[0m\n' world
1
27.01.2020, 23:22

Теги

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