使用awk替换特殊字符
我有一个文件,第一个字段如下:使用awk替换特殊字符,awk,Awk,我有一个文件,第一个字段如下: ENSGALG00000000189|ENSGALT00000000247|10|3979|4020 我想去掉“|”符号,只留一个空间 我一直在尝试此代码,但不起作用: awk -F "|" '{gsub ("|", "")' file 如果你能帮我做这件事,我将非常感激。谢谢你,这个awk应该可以 echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020 " | awk -F\| '$1=$1' O
ENSGALG00000000189|ENSGALT00000000247|10|3979|4020
我想去掉“|”符号,只留一个空间
我一直在尝试此代码,但不起作用:
awk -F "|" '{gsub ("|", "")' file
如果你能帮我做这件事,我将非常感激。谢谢你,这个
awk
应该可以
echo "ENSGALG00000000189|ENSGALT00000000247|10|3979|4020 " | awk -F\| '$1=$1' OFS=" "
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
或者更强壮一些
awk -F\| '{$1=$1}1' OFS=" "
这些设置将输入字段分隔符设置为
|
,将输出分隔符设置为“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
使用sed
使用
tr
代替awk
:
tr '|' ' ' < input.txt > output.txt
tr'|'output.txt
awk解决方案不好,因为它只对一组固定的元素有效。您差一点就到了,错过了最后一个}
和打印出来的1
。
$ cat file | sed 's/|/ /g'
ENSGALG00000000189 ENSGALT00000000247 10 3979 4020
tr '|' ' ' < input.txt > output.txt