用笨方法解决Shell中按行读取文件之后Tab键不见的问题
文章目录
Shell
强大灵活,但是今天在使用Shell
处理按行读取文件时发现 读取到的行设定的tab
分割符不见了
先看一下演示的待处理文件:
需要做的需求就是将里面的数据使用shell
将第一列读取出来做一些其他处理(当然如果仅仅是完成读取首列这个功能,使用awk
是最快的,这里只是演示)
1 | #! /bin/bash |
执行这个文件并且使用管道| vim -
打印只之后可以发现格式不对,按行打印了,并且其原先的分隔符tab
也消失了
后来查到据说shell
的默认分隔符是空格的原因,所以一种最直接的方式就是去.bashrc
里面修改分割符,但是这么做可能会影响其他的shell程序
所以比较保险的一种方法就是先将行中的tab
替换,再对替换后的数据进行操作1
2
3
4
5
6
7#! /bin/bash
cat score.log | awk 'gsub("\t","\001",$0)' | while read line #按行读取文件
do
grade=`echo $line | awk -F "\001" '{print $1}'` #读取首列(年级)
echo $grade
done
先做了独立的tab
去掉之后就可以很顺利地看到需要的结果了
这个方法虽然比较简单,但是非常实用~