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
如果有人能告诉我如何在测试完 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.
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