用awk替换特殊字符

时间:2013-11-11 20:39:53

标签: awk

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

ENSGALG00000000189|ENSGALT00000000247|10|3979|4020  

我想摆脱“|”签署,只是有一个空间。

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

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

如果你能帮助我,我会非常感激。谢谢

4 个答案:

答案 0 :(得分: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输入到|,输出分隔符设置为"space" $1=$1,使用新的分隔符重建数据。

答案 1 :(得分:1)

使用tr代替awk

tr '|' ' ' < input.txt > output.txt

答案 2 :(得分:0)

使用gsub

$> echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020" | awk '{ gsub (/\|/, " "); print }' 
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020

答案 3 :(得分: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