bash:在while循环中剪切时保留白色字符 好像读取行丢弃空白的第一个字符 while read line; do DB=$( echo "$line" | cut -c1-8); echo DB=$DB; echo $line; done < histogram.txt
第1行“…7107”(.=空格)的预期结果 我真正得到的是“7107:(” 最后一行(“\uuuuuuuuuuu1888”)有效,因为我用下划线替换了空格 结果bash:在while循环中剪切时保留白色字符 好像读取行丢弃空白的第一个字符 while read line; do DB=$( echo "$line" | cut -c1-8); echo DB=$DB; echo $line; done < histogram.txt,bash,while-loop,cut,Bash,While Loop,Cut,第1行“…7107”(.=空格)的预期结果 我真正得到的是“7107:(” 最后一行(“\uuuuuuuuuuu1888”)有效,因为我用下划线替换了空格 结果 我如何得到空白字符? 你需要2件事: 将IFS设置为read命令的空字符串:,而IFS=read-r line——这将保留变量中的所有空白 在您使用的所有地方引用变量:echo“$line” 当IFS=read-r行时;执行 DB=“${line:1:8}” echo“DB=$DB” 回音“$line” 完成
我如何得到空白字符?
你需要2件事:read
命令的空字符串:,而IFS=read-r line
——这将保留变量中的所有空白echo“$line”
当IFS=read-r行时;执行
DB=“${line:1:8}”
echo“DB=$DB”
回音“$line”
完成
bash参数substion可以接受一个子字符串,因此您不需要使用
cut
使用:IFS=
as:而IFS=read-r line;do…
使用DB=${line%%:*}
或IFS=:read-r DB_
7107: ( 12,255, 0) #0CFF00 srgb(12,255,0)
4514: ( 12,255,255) #0CFFFF srgb(12,255,255)
11580: ( 30, 0,253) #1E00FD srgb(30,0,253)
14365: (246,255, 0) #F6FF00 srgb(246,255,0)
29576: (255, 0, 0) #FF0000 red
____188858: (255,255,255) #FFFFFF white
while IFS= read -r line; do
DB="${line:1:8}"
echo "DB=$DB"
echo "$line"
done < histogram.txt