Linux 在bash中提取特定单词

Linux 在bash中提取特定单词,linux,bash,sed,awk,cut,Linux,Bash,Sed,Awk,Cut,我有以下表格中的一些行: -rw-r--r-- sten/sefan anonymous 8593 2011-12-05 18:28 8M -rw-r--r-- sten/sefan 8593 2011-12-05 18:28 8M 如何获得8593一行程序 通过执行一些存档的干运行来检索行,例如: $ tar jtvf zip64support.tar.bz2 -rw-r--r-- stefan.bodewig/Domain Users 16195018 2011-10-14 21:05

我有以下表格中的一些行:

-rw-r--r-- sten/sefan anonymous 8593 2011-12-05 18:28 8M
-rw-r--r-- sten/sefan 8593 2011-12-05 18:28 8M
如何获得
8593
一行程序

通过执行一些存档的
干运行
来检索行,例如:

$ tar jtvf zip64support.tar.bz2 
-rw-r--r-- stefan.bodewig/Domain Users 16195018 2011-10-14 21:05 100k_Files.zip
-rw-r--r-- stefan.bodewig/Domain Users 14417258 2011-10-14 21:05 100k_Files_7ZIP.zip
或:


特别是要在一行中获取数字,后面加上
YYYY-mm-dd

要获取当前目录中的文件大小,需要执行的命令是

$ stat -c %s *
您不想使用
bash
awk
cut
来执行此操作,您的问题是为什么第一行是第四列,第二行是第三列的重要原因。解析
ls的输出


编辑:

由于列是number is gaurenteed,我将使用
grep
和:

尝试一下:

tar jtvf bla.tar.bz2|awk '$0=$3'
在你提到的问题中

在一行中获取数字,其后为YYYY mm dd

如果您真的想使用grep:

tar ... |grep -oP '\d+(?= \d{4}-)'

如果这类似于
ls
output,那么您不应该解析它。数据从哪里来?您提取的数字的含义是什么?例如:$tar jtvf bla.tar.bz2-rw-r--r--tcurdt/tcurdt 610 2007-11-14 18:19 test1.xml-rw-r--r--tcurdt/tcurdt 82 2007-11-14 18:19 test2。xml@yuwang我建议你在问题中加入焦油部分。因为您的示例让人认为它来自ls命令。更新了我的问题。谢谢,请查看更多的格式选项。对格式使用双引号,例如:
stat-c“%s%z”
stat
适用于文件系统下的文件,我使用的是
-t
,因为我不想提取存档中的文件。正确,您应该从一开始就包含此信息。我使用
grep
添加了一个解决方案。
tar jtvf bla.tar.bz2|awk '$0=$3'
tar ... |grep -oP '\d+(?= \d{4}-)'