9

I would like to know how i can delete the first column of a csv file with awk or sed

Something like this :

FIRST,SECOND,THIRD

To something like that

SECOND,THIRD

Thanks in advance

Stoufiler
  • 175
  • 1
  • 2
  • 13

4 Answers4

27

Following awk will be helping you in same.

awk '{sub(/[^,]*/,"");sub(/,/,"")} 1'   Input_file

Following sed may also help you in same.

sed 's/\([^,]*\),\(.*\)/\2/'  Input_file

Explanation:

awk '                 ##Starting awk code here.
{
  sub(/[^,]*/,"")     ##Using sub for substituting everything till 1st occurence of comma(,) with NULL.
  sub(/,/,"")         ##Using sub for substituting comma with NULL in current line.
}
1                     ##Mentioning 1 will print edited/non-edited lines here.
'   Input_file        ##Mentioning Input_file name here.
kvantour
  • 25,269
  • 4
  • 47
  • 72
RavinderSingh13
  • 130,504
  • 14
  • 57
  • 93
1

Using sed : ^[^,]+, regex represent the first column including the first comma. ^ means start of the line, [^,]+, means anything one or more times but a comma sign followed by a comma.

you can use -i with sed to make changes in file if needed.

sed -r 's/^[^,]+,//' input
SECOND,THIRD 
P....
  • 17,421
  • 2
  • 32
  • 52
1

With Sed

sed -i -r 's@^\w+,@@g' test.csv

Grab the begin of the line ^, every character class [A-Za-z0-9] and also underscore until we found comma and replace with nothing. Adding g after delimiters you can do a global substitution.

Darby_Crash
  • 446
  • 3
  • 6
  • I doubt if this will give the correct answer. `.*` means greedy match so you are going to replace till last comma. – P.... Oct 24 '17 at 07:44
  • Sorry, my bad, i have updated the code. – Darby_Crash Oct 24 '17 at 07:48
  • This has been marked as low-quality for length and content. Would you mind elaborating a bit on your suggested command. What are the switches for? ... – Fildor Oct 24 '17 at 08:09
1

Using awk

$awk -F, -v OFS=, '{$1=$2; $2=$3; NF--;}1' file
SECOND,THIRD
Rahul Verma
  • 2,946
  • 14
  • 27