Bash управляет/пишет сценарий для удаления строки из CSV с дубликатом в столбце

просто необходимо добавить его к Вашему .vimrc файл.

set tabstop=2
3
22.03.2013, 22:54
3 ответа
awk -F, '!seen[$1]++'

$1 первый столбец, изменение как соответствующий; можно использовать несколько столбцов, разделенных запятыми ([$1,$3]), или $0 для целой строки.

5
27.01.2020, 21:11
  • 1
    Ничего себе! Это удивительно просто!Спасибо. Это работает отлично. Для любых супер новичков как я. Просто необходимо поместить csv после команды выше и если Вы хотите произвести его, затем используйте это>. Это было бы похоже на это: awk -F, '!seen[$1]++' inputfile.csv > outputfile.csv. –  Peaceful_Warrior 23.03.2013, 23:00

Bash тверд, но Вы можно назвать Perl от Bash? Если Ваши поля разделяются запятыми, и Ваше поле ключа является вторым,

$ cat a.csv
11,22,33
214,22,354
6,6,6
4,5,7
1,22,1

этот лайнер распечатает, если он уже не видел второй столбец:

$ perl -ne '$value = (split /,/)[1]; print unless $x{$value}++;' a.csv 
11,22,33
6,6,6
4,5,7

Эти [1] номер столбца и основан на нуле.

3
27.01.2020, 21:11

Если существуют поля, которые содержат символы-разделители в кавычках (не работает с Ruby 1.8):

$ ruby -rcsv -e 'puts CSV.parse($<).uniq{|l|l[1]}.map(&:to_csv)' <<< $'"1,9",3\n4,8\n7,3'
"1,9",3
4,8
0
27.01.2020, 21:11

Теги

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