我正在尝试解析文件,在这里和那里更改一行。我有一个像这样的简单循环:
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
如何在不删除前导空格的情况下从文件中读取一行?
答案 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