我尝试使用 cut 命令从“ls -l”命令输出中获取文件名列表及其大小。
$ ls -l | cut -f 5,9 -d " "
它给了我基于“单一空白”作为分隔符的输出。当“ls -l”输出在某些行中包含连续空格时,该命令的输出不适用于这些行。只有单个空格作为列分隔符的行会给出正确的输出。
当我运行以下命令时:
$ ls -l | awk '{ print $5"\t"$9 }'
awk 忽略多个空格并从“ls -l”输出中正确提取列。而 cut 将每个空格视为分隔符,将值放在错误的列中。
它为所有行提供正确的输出。
为什么会这样?我可以用 cut 命令做什么来解决这个问题?