gpt4 book ai didi

linux - 剪切和 awk 命令 : Delimiter behaviour

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:31 25 4
gpt4 key购买 nike

我尝试使用 cut 命令从“ls -l”命令输出中获取文件名列表及其大小。

$ ls -l | cut -f 5,9 -d " "

它给我输出基于“单一空白”作为分隔符。当“ls -l”输出在某些行中包含连续空格时,该命令的输出不适合这些行。 只有一个空格作为列分隔符的行给出了正确的输出。

当我运行以下命令时:

$ ls -l | awk '{ print $5"\t"$9 }'

awk 忽略多个空格并从“ls -l”输出中正确提取列。而 cut 将每个空格视为分隔符,将值放在错误的列中。

它为所有行提供正确的输出。

为什么会这样?我该怎么做才能用 cut 命令解决这个问题?

最佳答案

awk 在空白处拆分字段。 cut 在定界字符 上拆分字段。 awk 是解决这个问题的更好工具。

作为替代方案,您可以通过管道将 ls -l 传输到压缩多个空格字符的实用程序(可能是 tr -s),或者传输到替换多个空格字符的实用程序中空格字符与单个字符(可能是 sed)。 然后 cut 将执行您想要的操作。

关于linux - 剪切和 awk 命令 : Delimiter behaviour,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14324755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com