his*_*ere 4 linux bash awk cut sed
我想删除输出字符串中出现的前两个单词.此字符串也在另一个字符串中.
是)我有的:
for servers in `ls /data/field`
do
string=`cat /data/field/$servers/time`
Run Code Online (Sandbox Code Playgroud)
这发送此文本:
00:00 down server
Run Code Online (Sandbox Code Playgroud)
我想删除"00:00 down",以便它只显示"server".
我尝试过使用cut -d ' ' -f2- $string最终只删除命令搜索的目录.
有任何想法吗?
使用-d选项将分隔符设置为空格
$ echo 00:00 down server | cut -d" " -f3-
server
Run Code Online (Sandbox Code Playgroud)
注意使用字段编号3作为计数的开始1而不是0
从手册页
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
N- from N'th byte, character or field, to end of line
Run Code Online (Sandbox Code Playgroud)
更多测试
$ echo 00:00 down server hello world| cut -d" " -f3-
server hello world
Run Code Online (Sandbox Code Playgroud)
该for循环能够使用通配符遍历文件。所以我会写一些类似的东西
for servers in /data/field*
do
string=`cut -d" " -f3- /data/field/$servers/time`
...
...
Run Code Online (Sandbox Code Playgroud)
请正确地做事:
for servers in /data/field/*; do
string=$(cut -d" " -f3- /data/field/$servers/time)
echo "$string"
done
Run Code Online (Sandbox Code Playgroud)
$( )ls输出,glob而是像我一样使用data/field/*查看http://mywiki.wooledge.org/BashFAQ了解各种主题