对于能够告诉我如何在测试空格/制表符后面的内容是另一个指定的子字符串后如何将所有字符提取到第一个空格或制表符后,我最有责任?例如,包含
的文件php server-side
asp server-side
css client-side
html client-side
golang server-side
当逐行读取时可用于生成字符串
php asp golang
即。结束客户端的行完全退出,包含服务器端的行在空格处截断。
答案 0 :(得分:5)
这个命令可以解决问题,
grep "server-side" filename|cut -d ' ' -f1|tr '\n' ' '
解释如下;
grep "server-side" filename
它只捕获与字符串服务器端匹配的行。
cut -d ' ' -f1
cut
命令将通过分隔符空格切割表的第一列。
tr '\n' ' '
tr
命令会将所有新行字符替换为空格。
输出正是OP提到的问题(要求):
php asp golang
答案 1 :(得分:3)
如果你的意图是在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
答案 2 :(得分:2)
通过sed,
$ sed -n 's/[[:space:]]\+server-side$//p' file
php
asp
golang
将输出传递给tr
命令是否需要折叠输出。
sed -n 's/[[:spacee$//p' ri | tr '\n' ' '
答案 3 :(得分:1)
grep "server-side" FILE_NAME | awk '{print $1}'
说明: grep&#34;服务器端&#34; FILE_NAME可以过滤掉这些客户端条目。 然后awk&#39; {print $ 1}&#39;只能打印文本的第一行。
答案 4 :(得分:1)
grep server-side foo.txt | cut -d' ' -f1 | paste -s -