我有一个包含第一个字段的文件,如下所示:
ENSGALG00000000189|ENSGALT00000000247|10|3979|4020
我想摆脱“|” 签名,然后有一个空间。
我一直在尝试这段代码,但它不起作用:
awk -F "|" '{gsub ("|", "")' file
如果你能帮我解决这个问题,我将非常感激。谢谢
我有一个包含第一个字段的文件,如下所示:
ENSGALG00000000189|ENSGALT00000000247|10|3979|4020
我想摆脱“|” 签名,然后有一个空间。
我一直在尝试这段代码,但它不起作用:
awk -F "|" '{gsub ("|", "")' file
如果你能帮我解决这个问题,我将非常感激。谢谢
使用tr
而不是awk
:
tr '|' ' ' < input.txt > output.txt
这awk
应该做
echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020 " | awk -F\| '$1=$1' OFS=" "
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
或者更健壮的
awk -F\| '{$1=$1}1' OFS=" "
这些设置输入 Filed Separator|
和 Output Separator 以"space"
$1=$1
使用新的分隔符重建数据。
使用gsub
:
$> echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020" | awk '{ gsub (/\|/, " "); print }'
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
处理管道符号 -
$ cat file
ENSGALG00000000189|ENSGALT00000000247|10|3979|4020
使用awk
$ awk -F '|' '{print $1 " " $2 " " $3 " " $4 " " $5}' file
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
使用sed
$ cat file | sed 's/|/ /g'
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020