linux - 如何停止读取剥离空间

标签 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

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

最佳答案

参见 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/

相关文章:

linux - mongodb 无法从 mongo.conf 开始

linux - 在文件夹之间移动文件不起作用

linux - 将输出存储到 shell 变量中

shell - 如何知道一个非常小的文件的大小?

python - 如何在 Python 的 shell 脚本中获取退出状态集

linux - IPC共享内存和线程内存的性能差异

linux - 比较 Linux 中两个目录与​​第三个目录中文件的存在情况

java - 如何在 ubuntu 中将 JAVA_HOME 变量添加到 PATH 变量

c - 即使在处理程序中重置,SIGALRM 的信号处理程序也不起作用

linux - Linux 中的 Shell 文件大小