как выровнять дефис

Некоторые подробности о форматировании ваших данных будут полезны. Без каких-либо подробностей нам придется сделать некоторые предположения:

  • SNP перечислены по одному в строке в каком-то файле
  • ваши строки данных разделены пробелами -
  • SNP, появляющийся в любом месте строки, считается совпадением в этой строке
  • нам нужны столбцы 1, 2 и 3 из каждой совпадающей строки

В таком случае попробуйте это:

grep -f list_of_SNPs.txt very_large.txt | cut -f 1,2,3 > new_file.txt

2
20.02.2020, 01:26
3 ответа

Похоже, вы хотите от nlдо выровнять по левому краю с шириной поля 3:

... | nl -nln -w3 -s '- '

или эквивалентная ширина поля 2, если вы хотите явно включить начальный пробел в строку разделителя:

.... | nl -nln -w2 -s ' - '
4
28.04.2021, 23:22

Вместо использования

… | nl -w1 -s '  - ' | …

для печати номеров строк, вместо этого вы можете использовать awkи отформатировать строку с помощьюprintf:

… | awk '{printf "%-2s - %s\n",NR,$0}' | …
2
28.04.2021, 23:22

Первая идея, которая приходит на ум, это использовать (GNU)sedвот так:

sed -E 's/^([1-9])  -/\1   -/'

добавляется в конце ваших команд перед >>.

1
28.04.2021, 23:22

Теги

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