Shell 脚本子字符串直到 space

Shell script substring till space

如果有人能告诉我如何在测试完 space/tab 之后的第一个 space 或制表符之前提取所有字符,我将非常感激是另一个指定的子串吗?例如包含

的文件
php server-side
asp server-side
css client-side
html client-side
golang server-side

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

php asp golang

即以 client-side 结尾的行完全删除,包含 server-side 的行在 space.

处被截断

这个命令可以解决问题,

grep "server-side" filename|cut -d ' ' -f1|tr '\n' ' '

解释如下;

grep "server-side" filename

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

cut -d ' ' -f1

cut 命令将通过分隔符 space.

剪切 table 的第一列
tr '\n' ' '

tr 命令将使所有换行符替换为 space.

输出 将正是 OP 提到的问题(要求):

php asp golang
grep "server-side" FILE_NAME | awk '{print }'

说明: grep "server-side" FILE_NAME 可以过滤掉那些客户端条目。 然后 awk '{print $1}' 只能打印文本的第一行。

通过sed,

$ sed -n 's/[[:space:]]\+server-side$//p' file
php
asp
golang

将输出传递给 tr 命令是您想要折叠输出。

sed -n 's/[[:spacee$//p' ri | tr '\n' ' '
grep server-side foo.txt | cut -d' ' -f1 | paste -s -

如果您的意图是在 shell 循环中遍历标记,则 shell 内置了空格拆分。

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