从第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%-*}"