Интересно, что это за цвет при установке, может ли кто-нибудь пролить свет?
Цвета
ls
могут представляют разрешения, по умолчанию для некоторых систем на зеленом фоне отображаются каталоги, в которых у всех есть права на запись:
Вы можете изменить цвет по умолчанию, как показано ниже:
Экспорт базы данных цветов каталога:
dircolors --print-database > ~/.mydircolors
Откройте его с помощью ваш любимый редактор ( nano ~ / .mydircolors
), Измените или добавьте недостающее расширение файла по своему усмотрению, затем откройте свой .bashrc
:
Закомментируйте следующие строки, чтобы get:
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
Измените eval " dircolors
" на:
eval "`dircolors ~/.mydircolors`"
Сохранить и выйти.
Это можно сделать с помощью grep:
grep -e '^chr4\s\+[3-7]' input
где выражение представляет собой:^chr4
строк, начинающихся с chr4, \s\+
один или несколько пробелов, [3-7]
соответствует одной цифре в диапазоне от 3 до 7.
Возможно, более полезным будет использовать head
или tail
, чтобы получить столько строк, сколько вы хотите, вместо того, чтобы сопоставлять их с помощьюgrep
(с использованием grep только для сопоставления первого столбца ).
grep -e '^chr4\s\+' input| tail -n +3| head -n 5
grep
соответствует строкам, начинающимся с chr4
, tail
дает строки, начинающиеся с 3-й строки, и при использовании head
ограничивает вывод первыми 5 строками (строки с 3 по 7 ).
Решение для потенциально несортированного входного файла:
sort -k1,1 -k2,2n file | awk '$1=="chr4" && $2>2 && $2<8'
Выход:
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
Если входной файл отсортирован, достаточно использовать:
awk '$1=="chr4" && $2>2 && $2<8' file
awk
, вероятно, лучший инструмент для работы. Простое решение, похожее на уже данное, но который на самом деле использует указанные вами параметры, это:
awk '$1=="chr4" && $2>=3 && $2<=7'
Вы можете предпочесть более общее решение, который включает в себя размещение команды awk
в сценарии оболочки,:
#!/bin/sh
if [ "$#" -lt 3 ]
then
echo "Usage: $0 chromosome low_position high_position"
exit 1
fi
chr="$1"
lo="$2"
hi="$3"
shift 3
awk -vchromo="$chr" -vpos1="$lo" -v pos2="$hi" '$1==chromo && $2>=pos1 && $2<=pos2' "$@"
При запуске с менее чем тремя аргументами это напоминает вам, какими должны быть аргументы, и завершает работу. В противном случае он сохраняет первые три аргумента в переменных оболочки, а затем убирает их из списка аргументов. Затем он вызывает awk
, передавая значения переменных оболочки как переменные awk
.
Вы можете вызвать это любым из следующих способов::
./myscript chr4 3 7 data
или
./myscript chr4 3 7 < data
или
(some_other_process) |./myscript chr4 3 7и, в любом случае, перенаправить вывод в новый файл с помощью
>
. Вы можете использовать утилиту split
.
split -p 'chr4 (3|8)' -a 1 my_file output
split
файл на несколько частей (в основном обратныйcat
)p
для разделения на расширенное регулярное выражение 'chr4 (3|8 )' -a 1
для суффикса созданных файлов с одним символом output
— префикс имени каждого создаваемого файла Теперь файл outputb
будет содержать желаемый результат. Вы также можете изменить это, чтобы поместить каждый хромосом в отдельный файл.