分页: 1 / 1

如何在保留源文件格式(空格、制表符等)的条件下,读取文件

发表于 : 2012-09-28 17:14
renxinzhi

代码: 全选

#!/bin/bash
infile=$1
while read line
do
    echo $line
done <$infile
mts@ubuntu-unity:~/vasp/Cu-NH3/ads/NH3/100$ ./test.sh ppp
1.25449250 1.25449250 0.00000000
1.25449250 3.76347750 0.00000000
3.76347750 1.25449250 0.00000000
3.76347750 3.76347750 0.00000000
0.00000000 0.00000000 5.53328950
0.00000000 2.50898500 5.53328950
我也试过echo "$line",这样仍然不能保留行首的空格
test-ppp.png
试过了网上很多的方法,但是都不能保留源文件中的空格。
请问,如何保留源文件的格式,使输出与源文件一模一样呢?
源文件ppp
ppp.png
插入引用时,论坛也把空格给删除了(真奇怪啊),我只能插入图片

Re: 如何在保留源文件格式(空格、制表符等)的条件下,读取文件

发表于 : 2012-09-28 17:56
renxinzhi
添加一条
IFS="\t"
就解决了

Re: 如何在保留源文件格式(空格、制表符等)的条件下,读取文件

发表于 : 2012-09-28 17:57
susbarbatus
mark 学习

Re: 如何在保留源文件格式(空格、制表符等)的条件下,读取文件

发表于 : 2012-09-29 19:05
renxinzhi
在linuxSir上不推荐这种用法:
vikia 写了:
IFS="\t"
可能是误用。
因为这句的意思是将字符'\'和't'赋值给IFS变量。
如果要将tab复制给IFS,应该在引号中直接输入。
另外,如果行首为tab这样也就无效了,可以将IFS赋空值,这样shell就不会进行域分隔处理了。

代码: 全选

IFS=;
记得预先保存IFS的值

代码: 全选

OIFS=$IFS;
之后再恢复

代码: 全选

IFS=$OFS;
最后,这句
echo $line
应该改成

代码: 全选

echo "$line";