cut:我们可以设置多个空格作为分隔符吗?

Zhi*_*ang 8 bash shell cut

我有这样的文字:

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 的建议

  • `awk '{print $1, $2, $4;}' file` 就足够了,不需要 `cat`。 (3认同)

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 ' ' 将多个空间的每个跨度折叠成一个空间.


Ign*_*ams 8

你不能.如果您希望能够为分隔符使用多个字符(甚至是正则表达式),请改用awk.

  • 用awk添加一个例子会很棒 (3认同)

gle*_*man 5

此外,您可以使用位置参数

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)