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

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

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

最佳答案

参见http://mywiki.wooledge.org/BashFAQ/001。您需要取消设置IFS以避免剥离开头和结尾的空格,并且您很可能也想使用-r:

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

关于linux - 如何停止读取剥离空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23132210/

10-15 05:26