从第11个单词开始,直到字符'-';是通过在bash中使用awk命令找到的

从第11个单词开始,直到字符'-';是通过在bash中使用awk命令找到的,bash,awk,Bash,Awk,我有一个带空格的文本 9 100% 361.7 tr Back 976.0 0.0 2.8 Get [FFF] DO SOMETHING HERE - 01 我想把它转换成这个 在这里做点什么 我试过这个: awk 'match($0, "\.-") {print substr($0, 1, RSTART)}' 但它给了我类似这样的输出: 9 100% 361.7 tr Back 976.0 0.0 2.8

我有一个带空格的文本

9   100%   361.7 tr  Back       976.0     0.0    2.8  Get      [FFF] DO SOMETHING HERE - 01
我想把它转换成这个

在这里做点什么

我试过这个:

awk 'match($0, "\.-") {print substr($0, 1, RSTART)}' 
但它给了我类似这样的输出:

9   100%   361.7 tr  Back       976.0     0.0    2.8  Get      [FFF] DO SOMETHING HERE
有没有办法从第11个单词开始,直到找到字符“-”为止

awk '{for(i=1;i<11;i++)$i="";sub(/-.*$/,"");sub(/^ */,"")}7'
事实上,grep可以为您做到这一点:

grep -Po '(\S+\s+){10}\K[^-]*'
你的例子是:

kent$  grep -Po '(\S+\s+){10}\K[^-]*' <<<"9   100%   361.7 tr  Back       976.0     0.0    2.8  Get      [FFF] DO SOMETHING HERE - 01"
DO SOMETHING HERE 

kent$grep-Po'(\S+\S+{10}\K[^-]*'或者您可以不使用分叉就完成它

read _ _ _ _ _ _ _ _ _ _ _ word <<< '9   100%   361.7 tr  Back       976.0     0.0    2.8  Get      [FFF] DO SOMETHING HERE - 01'
echo "${word%-*}"

read\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!第一个和第二个选项工作良好。这就是我要找的!再次感谢!
read _ _ _ _ _ _ _ _ _ _ _ word <<< '9   100%   361.7 tr  Back       976.0     0.0    2.8  Get      [FFF] DO SOMETHING HERE - 01'
echo "${word%-*}"