Ond*_*dra 6 unix bash text text-processing
基本上我从ls -la命令得到行:
-rw-r--r-- 13 ondrejodchazel staff 442 Dec 10 16:23 some_file
Run Code Online (Sandbox Code Playgroud)
并希望获得文件大小(442).我尝试过cut并sed命令,但是没有成功.使用基本的UNIX工具(cut,sed,awk ...),如何从stdin获取特定列,其中delimiter是/ +/regexp?
Tho*_*hor 14
如果你想这样做,cut你需要先挤压空间(tr -s ' '),因为cut不支持+.这应该工作:
ls -la | tr -s ' ' | cut -d' ' -f 5
Run Code Online (Sandbox Code Playgroud)
使用它sed(GNU sed)时需要做的工作多一点:
ls -la | sed -r 's/([^ ]+ +){4}([^ ]+).*/\2/'
Run Code Online (Sandbox Code Playgroud)
如果你使用grep替代(GNU grep),稍微多一点手指打孔:
ls -la | grep -Eo '[^ ]+( +[^ ]+){4}' | grep -Eo '[^ ]+$'
Run Code Online (Sandbox Code Playgroud)
解析ls输出比你想象的更难.使用专用工具,例如stat.
size=$(stat -c '%s' some_file)
Run Code Online (Sandbox Code Playgroud)
一种方法ls -la some_file | awk '{print $5}'可能会破坏,如果数字使用空格作为千位分隔符(这在一些欧洲语言环境中很常见).
另请参见为什么不应该解析ls(1)的输出.
| 归档时间: |
|
| 查看次数: |
8993 次 |
| 最近记录: |