linux - 为 X 数量替换未知数量的空格

标签 linux bash shell

嘿,所以我正在编写一个 Linux 脚本,我发现了一个有趣的发现。

我有一个命令可以按大小对目录中的文件进行排序并打印最大的一个。命令如下

找到 . -类型f -ls |排序-r -n -k7 |头-n 1

这将打印一些类似的东西

895918591 8 -r-w-x 1 user01 xdf 1931 3 月 28 日 23:21 ./myscript.sh

所以我想单独获取最大的文件大小并打印它。为了将它分开,我使用了 cut -d' ' -f2 问题是,这只会留下空输出。那是因为空格的数量不一致。

所以我试着做这样的事情

找到 . -类型f -ls |排序-r -n -k7 |头-n 1 | tr -d [:空白:] |剪切-d''-f2

问题是,这会删除所有空格,现在我无法用通用分隔符将它们分开。所以我想问,有没有一种方法可以逐字替换所有空格,然后用一个空格替换它们?

如果没有,至少还有其他方法可以达到该字节数吗?

最佳答案

Sed 和 Awk 是处理这类事情的绝佳工具。 Sed 是一种基于正则表达式的语言,可以修改 Sed 程序接收到的每一行的内容,而 Awk 也是一种面向行的工具,可以自动将其输入拆分为字段。

在 Sed 中将空格序列变成一个空格(将 /\s+/ 的所有匹配项替换为 ):

$ find ... | sed 's/\s+/ /g'

只打印 Awk 中每行的第一个“单词”(非空格序列):

$ find ... | awk '{print $1}'

http://tldp.org/LDP/abs/html/sedawk.html可以帮助您开始使用这些语言。

关于linux - 为 X 数量替换未知数量的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36271115/

相关文章:

c++ - C++ 的 Bash 脚本中是否有诸如 "sed"之类的命令?

linux - 从文件中提取数字

linux - 我无法解决此 bash 脚本中的语法错误(版本 4.1.2)

bash - 启动elasticsearch后运行单元测试

git - 使用 p4merge 作为 git diff 工具

linux - 如何使用sed修改文件内容

linux - 检测 .doc 文件在 Linux 上是否受密码保护

Linux程序创建目录但无法访问它

python - 杀死除了启动kill命令的解释器之外的所有Python解释器

arrays - 从变量追加到数组