首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cut的问题(unix)

cut的问题(unix)
EN

Stack Overflow用户
提问于 2010-06-02 19:01:07
回答 4查看 789关注 0票数 0

我在cut上遇到了奇怪的问题,我写了一个脚本,在那里我有行:

代码语言:javascript
复制
... | cut -d" " -f3,4 >! out

cut接收此数据(我用echo检查了它)

代码语言:javascript
复制
   James             James              033333333 0              0.00

但是我在out中收到了空行,有人能解释一下为什么吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-02 19:18:39

您需要压缩空格序列,以便将每个空格字符串替换为一个空格。挤压( tr command's -s )选项非常适合于此:

代码语言:javascript
复制
$ ... | tr -s " " | cut -d" " -f3,4 >! out
票数 1
EN

Stack Overflow用户

发布于 2010-06-02 19:08:14

如果您需要文本文件中的字段,awk几乎总是合适的选择:

代码语言:javascript
复制
... | awk '{print $3" "$4}'

例如:

代码语言:javascript
复制
$ echo 'James     James      033333333 0              0.00' | cut -d" " -f3,4

$ echo 'James     James      033333333 0              0.00' | awk '{print $3" "$4}'
033333333 0
票数 1
EN

Stack Overflow用户

发布于 2010-06-02 19:05:29

Cut不会将多个空格视为单个空格,因此它匹配空格之间的“虚无”。

当您省略>! out部件时,会得到空行吗?例如,你的目标是正确的领域吗?

如果输入字符串使用固定间距,则可能需要使用cut -c 4-10,15-20 | tr -d ' '提取字符组4-10和15-20,并删除其中的空格。

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

https://stackoverflow.com/questions/2957026

复制
相关文章

相似问题

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