How do get the first column of every line in an input CSV file and output to a new file? I am thinking using awk
but not sure how.
Try this:
awk -F"," '{print $1}' data.txt
It will split each input line in the file data.txt
into different fields based on ,
character (as specified with the -F
) and print the first field (column) to stdout.
Can be done:
$ cut -d, -f1 data.txt
echo "a,b,c" | cut -d',' -f1 > newFile
Input
a,12,34
b,23,56
Code
awk -F "," '{print $1}' Input
Format
awk -F <delimiter> '{print $<column_number>}' Input
This can be achieved using grep
:
$ grep -o '^[^,]\+' file.csv
Using Perl:
perl -F, -lane 'print $F[0]' data.txt > data2.txt
These command-line options are used:
-n
loop around every line of the input file-l
removes newlines before processing, and adds them back in afterwards-a
autosplit mode – split input lines into the@F
array. Defaults to splitting on whitespace.-e
execute the perl code-F
autosplit modifier, in this case splits on,
If you want to modify your original file in-place, use the -i
option:
perl -i -lane 'print $F[0]' data.txt
If you want to modify your original file in-place and make a backup copy:
perl -i.bak -lane 'print $F[0]' data.txt
If your data is whitespace separated rather than comma-separated:
perl -lane 'print $F[0]' data.txt
来源:https://stackoverflow.com/questions/11668621/how-to-get-the-first-column-of-every-line-from-a-csv-file