Ваш режим umask
неверен.
# umask 644
# touch test1
# stat -c "%a %n" test1
22 test1
Чтобы получить результирующие файлы с 644
, вам нужно установить umask 0022
.
# umask 0022
# touch test2
# stat -c "%a %n" test2
644 test2
Изman umask
:
umask() sets the calling process's file mode creation mask (umask) to mask & 0777 (i.e., only the file permission bits of mask are used), and returns the previous value of the mask.
Скажите grep
также ищите строки, начинающиеся с >
, и включайте строку, следующую за ней:
grep -A1 --no-group-separator '^>' combined_v4.fa > combined_v5.fa
Если ваша версия grep
не поддерживает --no-group-separator
, попробуйте это:
grep -A1 '^>' combined_v4.fa | grep -v '^--$' > combined_v5.fa
Вот один из способов с sed:
sed -n '/^>/!d;N;p' file
Обратите внимание, что если последняя строка ввода начинается с «>», она не будет напечатана.
С awk:
awk 'prev {print prev ORS $0; prev=""} /^>/ {prev=$0}' file
Дождитесь строки после «>», чтобы напечатать две строки. Вместо регулярного выражения можно использовать index()
:
awk 'prev {print prev ORS $0; prev=""} index($0,">")==1 {prev=$0}' file
^>
— это регулярное выражение для сопоставления строки, начинающейся с «>». index($0,">")
возвращает начальную позицию строки «>», которая должна быть равна единице (...==1
), если с нее начинается запись.
Чтобы убедиться, что у него тоже есть «hCoV»:
sed -n '/^>/!d;/hCoV/!d;N;p' file
awk 'prev {print prev ORS $0; prev=""} /^>/ && /hCoV/ {prev=$0}' file
Я предлагаю это, используя GNUsed
:
# find the multiline pattern ^digits→ACGT
# and delete those lines
$ sed '/^[[:digit:]]\+$/,/^[ACGT]\+$/d' file
>hCoV-19/2832832
ACTCGGGGGG
>hCoV-19/2789877
ACTCGGCCC
С помощью awk вы можете:
awk '/^>/ {c=2} c-- > 0' file
для печати 2 строк, когда отображается >
.
С помощью awk
вы можете попробовать:
awk 'f {print; f=0} /^>/ {print;f=1}' file
>hCoV-19/2832832
ACTCGGGGGG
>hCoV-19/2789877
ACTCGGCCC
"Printing with sed or awk a line following a matching pattern": https://stackoverflow.com/questions/17908555/printing-with-sed-or-awk-a-line-following-a-matching-pattern