0

我有一个包含第一个字段的文件,如下所示:

ENSGALG00000000189|ENSGALT00000000247|10|3979|4020  

我想摆脱“|” 签名,然后有一个空间。

我一直在尝试这段代码,但它不起作用:

awk -F "|" '{gsub ("|", "")' file

如果你能帮我解决这个问题,我将非常感激。谢谢

4

4 回答 4

1

使用tr而不是awk

tr '|' ' ' < input.txt > output.txt
于 2013-11-11T21:01:52.333 回答
1

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使用新的分隔符重建数据。

于 2013-11-11T20:46:05.630 回答
0

使用gsub

$> echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020" | awk '{ gsub (/\|/, " "); print }' 
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
于 2013-11-11T20:48:19.237 回答
0

处理管道符号 -

$ 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
于 2013-11-11T20:52:35.063 回答