我有这样的文字:
word1 word2 word3 word4
Run Code Online (Sandbox Code Playgroud)
一对单词之间可能有多个空格,我想从每一行得到一些单词列.当我使用cat file | cut -d ' ' -f1,2,4它时,似乎某些字段是空间,这不是我所期望的.我知道awk可以做到这一点.问题是我们能否cut只做到这一点?也就是说,我们可以设置多个空格作为分隔符cut,但数量是多少?
use*_*253 12
使用awk,兄弟:awk '{print $1, $2, $4;}' file
谢谢@fedorqui 的建议
mkl*_*nt0 12
正如其他人所说,cut不能单独做(并且awk是最好的选择,因为它是唯一需要的工具).如果您仍想使用cut,可以将其与之结合使用tr,但是:
tr -s ' ' <<<"word1 word2 word3 word4" | cut -d ' ' -f1,2,4
Run Code Online (Sandbox Code Playgroud)
tr -s ' ' 将多个空间的每个跨度折叠成一个空间.
此外,您可以使用位置参数
line="word1 word2 word3 word4"
set -- $line # no quotes here!
echo $1 $2 $4
Run Code Online (Sandbox Code Playgroud)
word1 word2 word4
Run Code Online (Sandbox Code Playgroud)