请求实现从字符[A,H,B]到数值[1,0,-1]的文件转换方案
解决方案:将A/H/B转换为1/0/-1并优化转换流程
直接处理Temp.txt的方法
如果你想基于已有的Temp.txt生成Final.txt,用sed做三次全局替换就能搞定:
sed 's/A/1/g; s/H/0/g; s/B/-1/g' Temp.txt > Final.txt
这条命令会把Temp.txt里所有的A替换成1,H替换成0,B替换成-1,结果直接输出到Final.txt。
更高效的一步到位方案(无需中间文件)
其实完全可以跳过生成Temp.txt的环节,把两次转换合并成一条命令,减少磁盘IO操作:
cut -f2- Infile.txt | sed '1d; s/2/1/g; s/1/0/g; s/0/-1/g' > Final.txt
各部分作用:
cut -f2- Infile.txt:提取Infile.txt从第2列开始的所有内容sed '1d':删除第一行(和你原来的1,1d效果一致,写法更简洁)s/2/1/g:全局替换所有2为1s/1/0/g:全局替换所有1为0s/0/-1/g:全局替换所有0为-1
用awk实现(更易读的字段处理方式)
如果需要更清晰的字段级控制,也可以用awk完成转换:
cut -f2- Infile.txt | awk 'NR>1 { for(i=1;i<=NF;i++){ if($i==2) $i=1 else if($i==1) $i=0 else if($i==0) $i=-1 } print }' > Final.txt
awk会跳过第一行(NR>1),然后遍历每一行的每个字段,根据原始数值直接替换成目标值,最后打印处理后的整行。
内容的提问来源于stack exchange,提问作者user3874325
相关产品推荐
相关产品推荐

