Ответ 1
Попробуйте следующее:
awk -F"," '{print $1}' data.txt
Он разделит каждую строку ввода в файле data.txt
на разные поля на основе символа ,
(как указано в -F
) и напечатает первое поле (столбец) на stdout.
Как получить первый столбец каждой строки во входном CSV файле и вывести его в новый файл? Я думаю, используя awk
, но не уверен, как это сделать.
Попробуйте следующее:
awk -F"," '{print $1}' data.txt
Он разделит каждую строку ввода в файле data.txt
на разные поля на основе символа ,
(как указано в -F
) и напечатает первое поле (столбец) на stdout.
Можно сделать:
$ cut -d, -f1 data.txt
echo "a,b,c" | cut -d',' -f1 > newFile
Вход
a,12,34
b,23,56
Код
awk -F "," '{print $1}' Input
Формат
awk -F <delimiter> '{print $<column_number>}' Input
Это может быть достигнуто с помощью grep
:
$ grep -o '^[^,]\+' file.csv
Использование Perl:
perl -F, -lane 'print $F[0]' data.txt > data2.txt
Используются следующие параметры командной строки:
-n
цикл вокруг каждой строки входного файла-l
удаляет новые строки перед обработкой и добавляет их обратно-a
автоматический режим - разделение входных строк на массив @F
. По умолчанию разбивается на пробелы.-e
выполнить код perl-F
модификатор авторасширения, в этом случае разбивается на ,
Если вы хотите изменить исходный файл на месте, используйте параметр -i
:
perl -i -lane 'print $F[0]' data.txt
Если вы хотите изменить исходный файл на месте и сделать резервную копию:
perl -i.bak -lane 'print $F[0]' data.txt
Если ваши данные разделены пробелами, а не разделены запятыми:
perl -lane 'print $F[0]' data.txt