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}-)'