首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell脚本子字符串直到空格

Shell脚本子字符串直到空格
EN

Stack Overflow用户
提问于 2015-01-28 05:26:19
回答 5查看 10.2K关注 0票数 5

我最感激的是,谁能告诉我,在测试了空格/制表符后面的是另一个指定的子字符串之后,如何提取到第一个空格或制表符的所有字符?例如,包含以下内容的文件

代码语言:javascript
复制
php server-side
asp server-side
css client-side
html client-side
golang server-side

当逐行读取时,可用于生成字符串。

代码语言:javascript
复制
php asp golang

也就是说,随着行的结束,客户端完全退出,包含服务器端的行在空间处被截断。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-01-28 05:29:47

这个命令能起作用,

代码语言:javascript
复制
grep "server-side" filename|cut -d ' ' -f1|tr '\n' ' '

解释如下;

代码语言:javascript
复制
grep "server-side" filename

它将只捕获与字符串服务器端匹配的行。

代码语言:javascript
复制
cut -d ' ' -f1

cut逗号将通过分隔符空间削减表的第一列。

代码语言:javascript
复制
tr '\n' ' '

tr命令将使所有新行字符替换为空格。

输出正是OP在讨论中提到的(需求):

代码语言:javascript
复制
php asp golang
票数 12
EN

Stack Overflow用户

发布于 2015-01-28 05:30:52

代码语言:javascript
复制
grep "server-side" FILE_NAME | awk '{print $1}'

说明: grep“服务器端”FILE_NAME可以过滤掉那些客户端条目。然后awk '{print $1}‘只能打印文本的第一行。

票数 3
EN

Stack Overflow用户

发布于 2015-01-28 05:52:41

如果您的目的是在shell循环中的令牌上循环,则shell内置了空格分割。

代码语言:javascript
复制
sep=''
while read -r lang feat; do
    case $feat in "client-side" ) continue;; esac
    printf '%s%s' "$sep" "$lang"   # replace this with something actually useful?
    sep=' '
done <<____HERE
    php server-side
    asp server-side
    css client-side
    html client-side
    golang server-side
____HERE
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28185227

复制
相关文章

相似问题

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