![](/img/trans.png)
[英]how to print lines with specific column matching members of array in bash
[英]How to correctly print read lines in bash
尝试遍历纯文本文件时,我的行为很奇怪:
#!/bin/bash
sed -n "5,5p" test.tmp
while read linea in
do
echo $linea
done < test.tmp
事情是,从第一个sed我得到了我期望的结果,但是从while循环中我没有得到:
./test.sh
(5) Sorgo DICOTILEDONEAS 1,5-2 l/ha 15
(1)
(2)
(3)
(4)
(5)
(6)
我同时附上两个文件,以帮助澄清此处发生的情况:
提前致谢
我会怎么做:
#!/bin/bash
while IFS= read -r linea; do
printf '%s\n' "$linea"
done < <(sed -n "5,5p" test.tmp)
< <( )
是进程替换,请检查
http://mywiki.wooledge.org/ProcessSubstitution
http://wiki.bash-hackers.org/syntax/expansion/proc_subst
“双引号”是每个包含空格/元字符和每个扩展名的文字: "$var"
, "$(command "$var")"
, "${array[@]}"
, "a & b"
。 使用'single quotes'
表示代码或使用$'s: 'Costs $5 US'
, ssh host 'echo "$HOSTNAME"'
。 看到
http://mywiki.wooledge.org/语录
http://mywiki.wooledge.org/参数
http://wiki.bash-hackers.org/syntax/words
我终于发现发生了什么事。 while语句中有一个额外的“ in”。 大概我混合了两种不同的时间。
我在哪里:
而在读取linea时做回声$ linea done <test.tmp
它应显示为:
在阅读linea时; ##已删除,且; 添加做回声$ linea完成<test.tmp
再次感谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.