首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash: while循环中的两个"cut“函数,只有一个有效

Bash: while循环中的两个"cut“函数,只有一个有效
EN

Stack Overflow用户
提问于 2021-04-22 20:59:27
回答 2查看 33关注 0票数 0

在cygwin环境中,我想逐行读取csv,并尝试从两列中获取值。所以我有

代码语言:javascript
运行
复制
 while read line ; do echo `cut -d";" -f5`; done < allk.lst

并显示正确的值。

但是:

代码语言:javascript
运行
复制
while read line ; do echo `cut -d";" -f5`; echo `cut -d";" -f4`; done < allk.lst

再次显示与之前一样的值...

有什么提示可以同时显示这两个值吗?

谢谢,Bommel

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 21:13:27

  1. cut -f接受一个字段列表,因此不需要调用cut两次

Using cut command to remove multiple columns

  1. echo cut -d";" -f5;没有做您所期望的事情。首先,缺少变量line

应用这些修复后,您的命令将如下所示:

代码语言:javascript
运行
复制
while read line; do echo $line | cut -d";" -f4-5 ; done < test.txt

Try a demo online!

票数 0
EN

Stack Overflow用户

发布于 2021-04-22 21:44:33

嗯,首先谢谢你。

一些好奇心:

在使用时

代码语言:javascript
运行
复制
 $ 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秒,中间有一个分号。

鉴于

代码语言:javascript
运行
复制
$ 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命令)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67213775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档