在cygwin环境中,我想逐行读取csv,并尝试从两列中获取值。所以我有
while read line ; do echo `cut -d";" -f5`; done < allk.lst
并显示正确的值。
但是:
while read line ; do echo `cut -d";" -f5`; echo `cut -d";" -f4`; done < allk.lst
再次显示与之前一样的值...
有什么提示可以同时显示这两个值吗?
谢谢,Bommel
发布于 2021-04-22 21:13:27
cut -f
接受一个字段列表,因此不需要调用cut
两次Using cut command to remove multiple columns
echo cut -d";" -f5;
没有做您所期望的事情。首先,缺少变量line
。应用这些修复后,您的命令将如下所示:
while read line; do echo $line | cut -d";" -f4-5 ; done < test.txt
发布于 2021-04-22 21:44:33
嗯,首先谢谢你。
一些好奇心:
在使用时
$ time while read line; do echo $line | cut -d";" -f4-5 ; done < allk.txt
K700W1666;S728A0103
K700W1651;S727A7570
K700W1654;S727A7579
K700W1657;S727A7581
K700W1660;S727A7582
K700W3040;S728A0099
K700W3043;S728A0107
K700W3042;S732A4280
K700W3594;S724A5213
K700W3600;S727A7609
K700W3603;S727A7615
K700W3597;S727A7617
K700W3604;S727A7589
K700W3624;S728A1599
K700W2164;S728A0091
K700W2165;S728A0110
K700W3565;S727A7577
K700W3568;S727A7578
K700W3560;S725A4806
K700W3563;S725A8285
K700W3559;S726A1925
K700W3562;S728A0197
K700W2016;S726A1929
K700W2012;S725A5172
K700W2015;S728A0056
K700W2014;S728A0061
K700W2017;S728A0067
real 0m12.165s
user 0m0.482s
sys 0m1.390s
它需要12秒,中间有一个分号。
鉴于
$ time while read line; do echo `cut -d";" -f4-5` ; done < allk.txt
K700W1651;S727A7570 K700W1654;S727A7579 K700W1657;S727A7581 K700W1660;S727A7582 K700W3040;S728A0099 K700W3043;S728A0107 K700W3042;S732A4280 K700W3594;S724A5213 K700W3600;S727A7609 K700W3603;S727A7615 K700W3597;S727A7617 K700W3604;S727A7589 K700W3624;S728A1599 K700W2164;S728A0091 K700W2165;S728A0110 K700W3565;S727A7577 K700W3568;S727A7578 K700W3560;S725A4806 K700W3563;S725A8285 K700W3559;S726A1925 K700W3562;S728A0197 K700W2016;S726A1929 K700W2012;S725A5172 K700W2015;S728A0056 K700W2014;S728A0061 K700W2017;S728A0067
real 0m0.308s
user 0m0.015s
sys 0m0.030s
只需要0.3秒...但也有一种血液病。那么:在两个变量中读取此值的最佳方法是什么(用于构建SQL命令)?
https://stackoverflow.com/questions/67213775
复制相似问题