Привет, я использую AWK для создания кучи представлений в нашем кластере.AWK или профиль bash добавляет нежелательные цветовые коды к stdout
$ls myfiles* | awk '{for(i=1;i<101;i++){print("qsub -d `pwd` -v FILE="$1",NUM="i" -N "$1" run.qsub")}}'
производит что-то вроде -
qsub -d `pwd` -v FILE=myfiles100.txt,NUM=100 -N myfiles100.txt run.qsub
КРОМЕ переменной $ 1 (myfiles100.txt), который был замещен в AWK заявлении, подсвечивается зеленым цветом синтаксиса. Я не знаю, связано ли это с моим профилем bash или чем-то с AWK, но я никогда не видел его раньше. Проблема возникает, когда я перенаправляю это на stdout.
$ls myfiles* | awk '{for(i=1;i<101;i++){print("qsub -d `pwd` -v FILE="$1",NUM="i" -N "$1" run.qsub")}}' > somefile.txt
И когда я открываю Somefile.txt
qsub -d `pwd` -v FILE=^[[0m^[[32mmyfiles100.txt^[[0m,NUM=100 -N ^[[0m^[[32myfiles100.txt^[[0m run.qsub
Цветовые коды вставляются как хорошо, но это приводит к путанице, когда я выполнить эти задания в планировщик. Я могу удалить цветовые коды с помощью команды nice sed.
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
Но должна быть какая-то настройка, которую мне не хватает, чтобы все было проще.
почти наверняка env var для 'ls'. используйте 'ls --color = never -other opts'. Удачи. – shellter
Спасибо! Конечно, это была проблема. global bash имеет опцию цвета ls – jwillis0720