我有以下几点:
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
为什么这段代码不起作用?
awk 'BEGIN { FS=",";OFS= " "}{print $0}' file
另外,如何跳过打印"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
发布于 2022-10-19 03:57:28
你可以使用:
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
在此:
sub(/^[^,]*,/, "")
删除第一个逗号之前的第一个值,第一个comma$1=$1
强制awk使用默认的OFS
重新生成记录,这是一个空格。。
使用{print $0}
时,不管OFS
值是什么,它都会打印原始记录,而不受篡改。您需要强制awk
通过更改任何列来重建记录,就像我做的$1=$1
(虚拟赋值)一样。
另一种解决办法可以是:
awk -F, '{$1=""; print substr($0, 2)}' file
发布于 2022-10-19 04:07:42
您还可以为此使用cut
:
$ s='ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487'
$ echo "$s" | cut -d, --output-delimiter=' ' -f2-
GSM2819484 GSM2819485 GSM2819486 GSM2819487
-d,
将输入分隔符指定为,
--output-delimiter=' '
集空间作为输出delimiter-f2-
打印除第一个以外的所有字段
发布于 2022-10-19 04:23:55
如果您只想使用空格字符替换,
字符,则可以为此使用工具- tr
命令,如下所示,让file.txt
内容为
ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487,GSM2819488,GSM2819489
然后
tr ',' ' ' < file.txt
给予输出
ID_REF GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489
请注意,与GNU不同的是,AWK
tr
仅限于标准输入,也就是说,您不能给它命名文件的名称,就像GNU AWK
那样。
如果您严格限于GNU AWK
,那么使用gsub
函数可能会得到如下相同的效果
awk '{gsub(/,/," ");print}' file.txt
注意gsub
是内嵌的,也就是说它确实改变了处理(默认:$0
),然后是print
编辑的。
https://stackoverflow.com/questions/74124865
复制相似问题