Как отображать текст только после третьей, первой и пятой запятой в этом порядке в Unix?

Почему не работает

*расширяется оболочкой перед запуском команды. Он соответствует существующим файлам. mvне имеет возможности сопоставления с образцом.

Решения

mmv

Эта команда работает примерно так, как вы пытаетесь это сделать. Он не такой мощный, как rename, но проще.

напр.mmv '*.assembled.*.fastq.gz' '#1_assembled_#2fastq.gz'

1
10.09.2021, 11:57
1 ответ

Утилита cutвсегда выводит поля в том же порядке, что и при вводе. Невозможно -переупорядочить поля.

Использование awkвместоcut:

awk -F, 'BEGIN { OFS=FS } { print $3, $1, $5 }'

Это выводит 3-е, 1-е и 5-е поля, разделенные запятыми -, в указанном порядке. Он использует тот же разделитель полей для вывода, что и для ввода.

Пример:

$ echo "a,b,c,d,e,f" | awk -F, 'BEGIN { OFS=FS } { print $3, $1, $5 }'
c,a,e

Если вы работаете с реальными файлами CSV, которые могут содержать поля в кодировке CSV -, используйте csvcutиз csvkit:

csvcut -c 5,1,3  file.csv

Вы также можете использовать имена столбцов с csvcut, например.

csvcut -c name,age,address  file.csv

См. также csvcut --help.

8
10.09.2021, 12:12

Теги

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