我写了以下脚本。我想读取一个文件并逐行打印,但它将空间视为新行。这是为什么?
#!/bin/bash
for i in `cat data.txt`
do
echo $i
done
输入:保存在文件名中数据.txt
B FM_Server10_grp GPCBIOEMM10 Y N ONLINE
输出:
B
FM_Server10_grp
PCBIOEMM10
Y
N
ONLINE
另一个问题:如何仅提取数字值,例如10
from GPCBIOEMM10
?
答案1
for i in ...
默认情况下,循环遍历以空格分隔的标记列表,而不是以换行符分隔的标记列表。空格和换行符都是空白字符,因此被视为分隔符。
考虑:
while read line; do
echo $line
done < data.txt
默认情况下,read 将读取直到换行符并将读取的内容存储在给定变量中。