Я провел небольшое исследование и обнаружил, что сочетания клавиш, включающие Ctrl в Linux, переключаются на американскую раскладку. ^ это`на клавиатурах США,поэтому следующие работы:
'.platform-win32,.platform-linux':
'ctrl-shift-`': 'tree-view:reveal-active-file'
См. здесь для получения дополнительной информации об этом.
Вы не можете полагаться на использование NR>1
и объединение перед всеми файлами сcat {} +
Таким образом, я пытаюсь повторно использовать ваш код, насколько это возможно:
{
awk 'NR==1{print;exit}' *test*file*csv
find. -type f -name '*test*file.csv' -exec awk 'NR>1' {} \; |
sort -u
} > output.file
ID,NAME,LOCATION
1,Vikrant,Gurgaon
22,abcd,Noida
2,Bharat,Noida
33,xyz,Hyderabad
3,Raju,Hyderabad
-exec command {} +
This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end
Итак, уже объединены
Немного изменив вашу командную строку, мы получим желаемый результат:
awk 'NR<2||FNR>1'./*test_file*.csv > temp ;
( head -n 1; sort -u; ) < temp > output.file
Ваши результаты находятся в файле output.file
просто сделай:
find. -type f -name '*test*file.csv' -exec awk '!seen[$0]++' {} +
для каждой строки, которую читает awk, если это не (! )ранее установленный в связанном массиве с именем замеченный , который будет добавлен в массив, и, поскольку результат условия разрешается как «истина», поэтому эта строка отправляется на вывод, и если какая-либо та же строка читается awk, тогда результат условия будет «false», поэтому дубликаты будут пропущены;
В awk $0
относится ко всей строке, и здесь мы использовали ключи массива, и значения будут увеличиваться для каждого считываемого ключа (строки ). для строки, если она не была задана в массиве, будет напечатано значение 0, а если значение для ключа >0, то оно будет пропущено.
С bash
с использованием head
, tail
иsort
:
Вы можете сохранить имена файлов в виде массива и
sort
результат с уникальной опцией files=( *test*.csv )
{
head -n1 "${files[0]}"
for i in "${files[@]}"; do
tail -n+2 "$i"
done | sort -u
} > output