gpt4 book ai didi

linux - 用连续的制表符代替 "\tNA\t"

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:30 24 4
gpt4 key购买 nike

有一个格式错误的 tsv 文件,到处都是空字段。我希望在 linux 上用“NA”填充这些空白区域。

我试过 awk '{gsub("\t\t","\tNA\t"); print$0)' 但这只会用一个空格替换 NA 实例。链接命令 awk '{gsub("\t\t","\tNA\t"); print$0)|awk '{gsub("\t\t","\tNA\t"); print$0) 每行做两次替换 - 但如果我有很多列要处理,则不是特别有用。

有没有更快(更简洁)的方法来做到这一点?

最佳答案

它有点复杂,因为您必须处理换行空字段、行尾空字段和可能连续的空字段。我无法用 sed 实现某些目标,这可能是疯了。但是对于 awk 这似乎有效:

$ cat test.txt
a c d e
g h i j
k l m n
p s t
w x

$ awk -F$'\t' '{for(i=1;i<=NF;++i){if($i==""){printf "NA"}else{printf $i} if(i<NF)printf "\t"} printf "\n"}' test.txt
a NA c d e
NA g h i j
k l m n NA
p NA NA s t
NA NA w x NA

当心复制粘贴,制表符可能会被转换为空格...顺便说一句,我搜索了 CSV 文件的解决方案,并从 this thread 中对其进行了改编。 ;) 您可以在其中看到最具可读性的选项是 awk 选项。

关于linux - 用连续的制表符代替 "\tNA\t",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35791745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com