Как удалить несколько первых столбцов из нескольких файлов? - PullRequest
0 голосов
/ 16 января 2019

У меня есть несколько таких файлов:

trans_ENSG00000047849.txt.traw
trans_ENSG00000047848.txt.traw
trans_ENSG00000047847.txt.traw
...

и каждый имеет около 300 столбцов. Столбцы разделены табуляцией. Я хотел бы удалить первые 7 столбцов из каждого из этих файлов.

Я знаю, как это сделать для каждого файла:

cut  -f 7- trans_ENSG00000047849.txt.traw > trans_ENSG00000047849.txt.trawN

Есть ли способ сделать это сразу для всех файлов?

ПРИМЕЧАНИЕ: в начале есть вкладка. Поэтому для удаления первых 7 столбцов я использовал здесь -f 7, а не -f 8.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Просто используйте петлю for:

for file in *.txt.traw
do 
    cut  -f 7- "$file" > "$file"N
done
0 голосов
/ 16 января 2019

Сначала сделайте резервную копию ваших файлов и попробуйте это (GNU sed):

sed -ri 's/^([^\t]*\t){7}//' trans_*.txt.traw

Как -i для sed изменит ваши файлы на месте. (Вы можете удалить i для тестирования).

Например:

$ cat file
1       2       3       4       5       6       7       8       9       0
a       b       c       d       e       f       g       h       i       j

        dfad            da
$ sed -ri 's/^([^\t]*\t){7}//' file

$ cat file
8       9       0
h       i       j

        dfad            da

Однако эта команда проста, поэтому она не будет удалена, если столбцов меньше 7. (Думаю, у тебя не будет таких строк, верно?)

Если вы все еще хотите удалить, когда столбцов меньше 7:

sed -r 's/^([^\t]*(\t|$)){,7}//'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...