bash while while循环"吃"我的空格字符

Seb*_*eyn 1 bash sed while-loop

我试图解析一个巨大的文本文件,比如200mb.

文本文件包含一些字符串

123
1234
12345
12345
Run Code Online (Sandbox Code Playgroud)

所以我的剧本看起来像

while read line ; do
echo "$line"
done <textfile
Run Code Online (Sandbox Code Playgroud)

但是使用上面的方法,我的字符串" 12345"被截断为"12345"

我试过用

sed -n "$i"p textfile
Run Code Online (Sandbox Code Playgroud)

但吞吐量从每秒27线减少到0.2线,这是不可接受的;-)

任何想法如何解决这个问题?

Wal*_*r A 8

你想在没有fieldsep的情况下回显这些行:

while IFS="" read line; do
    echo "$line"
done <<< " 12345"
Run Code Online (Sandbox Code Playgroud)

当您还想跳过特殊字符的解释时,请使用

while IFS="" read -r line; do
    echo "$line"
done <<< " 12345"
Run Code Online (Sandbox Code Playgroud)

您可以在没有双引号的情况下编写IFS:

while IFS= read -r line; do
    echo "$line"
done <<< " 12345"
Run Code Online (Sandbox Code Playgroud)