Reputation: 987
I have the following:
ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487,GSM2819488,GSM2819489,GSM2819490,GSM2819491,GSM2819492,GSM2819493,GSM2819494,GSM2819495,GSM2819496,GSM2819497,GSM2819498,GSM2819499,GSM2819500,GSM2819501,GSM2819502,GSM2819503,GSM2819504,GSM2819505,GSM2819506,GSM2819507,GSM2819508,GSM2819509,GSM2819510,GSM2819511,GSM2819512,GSM2819513,GSM2819514,GSM2819515,GSM2819516,GSM2819517,GSM2819518,GSM2819519,GSM2819520,GSM2819521,GSM2819522,GSM2819523,GSM2819524,GSM2819525,GSM2819526,GSM2819527,GSM2819528,GSM2819529,GSM2819530,GSM2819531,GSM2819532,GSM2819533,GSM2819534,GSM2819535,GSM2819536,GSM2819537,GSM2819538,GSM2819539,GSM2819540,GSM2819541,GSM2819542,GSM2819543,GSM2819544,GSM2819545,GSM2819546,GSM2819547,GSM2819548,GSM2819549,GSM2819550,GSM2819551,GSM2819552,GSM2819553,GSM2819554,GSM2819555,GSM2819556,GSM2819557,GSM2819558,GSM2819559,GSM2819560,GSM2819561,GSM2819562,GSM2819563,GSM2819564,GSM2819571,GSM2819572,GSM2819573,GSM2819574,GSM2819575,GSM2819576,GSM2819577,GSM2819578,GSM2819579,GSM2819580,GSM2819581,GSM2819582,GSM2819583,GSM2819584,GSM2819585,GSM2819586,GSM2819587,GSM2819588,GSM2819589,GSM2819590,GSM2819591,GSM2819592,GSM2819593,GSM2819594,GSM2819595,GSM2819596
Why is this code not working?
awk 'BEGIN { FS=",";OFS= " "}{print $0}' file
Also, how can I skip printing "ID_REF"?
Desired output:
GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489 GSM2819490 GSM2819491 GSM2819492 GSM2819493 GSM2819494 GSM2819495 GSM2819496 GSM2819497 GSM2819498 GSM2819499 GSM2819500 GSM2819501 GSM2819502 GSM2819503 GSM2819504 GSM2819505 GSM2819506 GSM2819507 GSM2819508 GSM2819509 GSM2819510 GSM2819511 GSM2819512 GSM2819513 GSM2819514 GSM2819515 GSM2819516 GSM2819517 GSM2819518 GSM2819519 GSM2819520 GSM2819521 GSM2819522 GSM2819523 GSM2819524 GSM2819525 GSM2819526 GSM2819527 GSM2819528 GSM2819529 GSM2819530 GSM2819531 GSM2819532 GSM2819533 GSM2819534 GSM2819535 GSM2819536 GSM2819537 GSM2819538 GSM2819539 GSM2819540 GSM2819541 GSM2819542 GSM2819543 GSM2819544 GSM2819545 GSM2819546 GSM2819547 GSM2819548 GSM2819549 GSM2819550 GSM2819551 GSM2819552 GSM2819553 GSM2819554 GSM2819555 GSM2819556 GSM2819557 GSM2819558 GSM2819559 GSM2819560 GSM2819561 GSM2819562 GSM2819563 GSM2819564 GSM2819571 GSM2819572 GSM2819573 GSM2819574 GSM2819575 GSM2819576 GSM2819577 GSM2819578 GSM2819579 GSM2819580 GSM2819581 GSM2819582 GSM2819583 GSM2819584 GSM2819585 GSM2819586 GSM2819587 GSM2819588 GSM2819589 GSM2819590 GSM2819591 GSM2819592 GSM2819593 GSM2819594 GSM2819595 GSM2819596
Upvotes: 2
Views: 80
Reputation: 36570
If you just want to replace ,
character using space character, then you might use tool for that purpose - tr
command as follows, let file.txt
content be
ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487,GSM2819488,GSM2819489
then
tr ',' ' ' < file.txt
gives output
ID_REF GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489
Observe that unlike GNU AWK
tr
is limited to standard input, i.e. you can not give it name(s) of file(s) as for GNU AWK
.
If you are strictly limited to GNU AWK
you might get same effect using gsub
function as follows
awk '{gsub(/,/," ");print}' file.txt
Observe that gsub
is inplace, i.e. it does alter what is processing (default: $0
) which is then print
ed.
Upvotes: 2
Reputation: 23677
You can also use cut
for this:
$ s='ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487'
$ echo "$s" | cut -d, --output-delimiter=' ' -f2-
GSM2819484 GSM2819485 GSM2819486 GSM2819487
-d,
specifies input delimiter as ,
--output-delimiter=' '
set space as output delimiter-f2-
print all fields except the first oneUpvotes: 2
Reputation: 785376
You may use:
awk -F, '{sub(/^[^,]*,/, ""); $1=$1} 1' file
GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489 GSM2819490 GSM2819491 GSM2819492 GSM2819493 GSM2819494 GSM2819495 GSM2819496 GSM2819497 GSM2819498 GSM2819499 GSM2819500 GSM2819501 GSM2819502 GSM2819503 GSM2819504 GSM2819505 GSM2819506 GSM2819507 GSM2819508 GSM2819509 GSM2819510 GSM2819511 GSM2819512 GSM2819513 GSM2819514 GSM2819515 GSM2819516 GSM2819517 GSM2819518 GSM2819519 GSM2819520 GSM2819521 GSM2819522 GSM2819523 GSM2819524 GSM2819525 GSM2819526 GSM2819527 GSM2819528 GSM2819529 GSM2819530 GSM2819531 GSM2819532 GSM2819533 GSM2819534 GSM2819535 GSM2819536 GSM2819537 GSM2819538 GSM2819539 GSM2819540 GSM2819541 GSM2819542 GSM2819543 GSM2819544 GSM2819545 GSM2819546 GSM2819547 GSM2819548 GSM2819549 GSM2819550 GSM2819551 GSM2819552 GSM2819553 GSM2819554 GSM2819555 GSM2819556 GSM2819557 GSM2819558 GSM2819559 GSM2819560 GSM2819561 GSM2819562 GSM2819563 GSM2819564 GSM2819571 GSM2819572 GSM2819573 GSM2819574 GSM2819575 GSM2819576 GSM2819577 GSM2819578 GSM2819579 GSM2819580 GSM2819581 GSM2819582 GSM2819583 GSM2819584 GSM2819585 GSM2819586 GSM2819587 GSM2819588 GSM2819589 GSM2819590 GSM2819591 GSM2819592 GSM2819593 GSM2819594 GSM2819595 GSM2819596
Here:
sub(/^[^,]*,/, "")
removes first value before first comma and 1st comma$1=$1
forces awk to rebuild the record using default OFS
which is a single space.When you use {print $0}
it prints original record untouched, untampered no matter what is the OFS
value. You need to force awk
to rebuild the record by changing any of the columns, like I did $1=$1
(a dummy assignment).
An alternate solution can be:
awk -F, '{$1=""; print substr($0, 2)}' file
Upvotes: 4