如何停止读取剥离空间

时间:2014-04-17 11:43:16

标签: linux shell

我正在尝试解析文件,在这里和那里更改一行。我有一个像这样的简单循环:

while read line; do
  if *condition* then ; 
    echo *someChangedOutput* >> newfile
  else
    echo "$line" >> newfile
  fi
done < oldfile

我的问题是“ oldfile ”中的大多数行都有前导空格。当我将它们读入变量line时,前导空格被剥离 - 当我回显"$line"到“ newfile

时,它们就会丢失

例如,如果“ oldfile ”是:

line1
      line2
   line3

newfile ”创建为

line1
line2
line3

如何在不删除前导空格的情况下从文件中读取一行?

2 个答案:

答案 0 :(得分:2)

http://mywiki.wooledge.org/BashFAQ/001。您需要取消设置IFS以避免剥离前导和尾随空格,并且您很可能还想使用-r

while IFS= read -r line; do
    do_something_with "${line}"
done

答案 1 :(得分:0)

您可以像这样使用特殊变量REPLY

while read; do
  if *condition* then ; 
    echo *someChangedOutput* >> newfile
  else
    echo "$REPLY" >> newfile
  fi
done < oldfile