我想要提取以下字符串/数据的选项:
/work/foo/processed/25
/work/foo/processed/myproxy
/work/foo/processed/sample
=或=
25
myproxy
sample
但如果我同时看到它们会有所帮助。
使用cut
或perl或其他任何可行的输出从
Found 3 items
drwxr-xr-x - foo_hd foo_users 0 2011-03-16 18:46 /work/foo/processed/25
drwxr-xr-x - foo_hd foo_users 0 2011-04-05 07:10 /work/foo/processed/myproxy
drwxr-x--- - foo_hd testcont 0 2011-04-08 07:19 /work/foo/processed/sample
执行cut -d" " -f6
会让我foo_users
,testcont
。我尝试将字段增加到更高的值,我只是无法得到我想要的东西。
我不确定cut
是否对此有用或类似perl?
基目录将保持静态/work/foo/processed
。
另外,我需要删除第一行Found Xn items
。感谢。
答案 0 :(得分:1)
您可以从/
的开始到第一次出现进行替换,(非贪婪)
$ your_command | ruby -ne 'print $_.sub(/.*?\/(.*)/,"/\\1") if /\//'
/work/foo/processed/25
/work/foo/processed/myproxy
/work/foo/processed/sample
或者您可以找到要拆分的唯一分隔符(字段分隔符)。例如,时间部分是唯一的,因此您可以拆分它并获取最后一个元素。 (第2个元素)
$ ruby -ne 'print $_.split(/\s+\d+:\d+\s+/)[-1] if /\//' file
/work/foo/processed/25
/work/foo/processed/myproxy
/work/foo/processed/sample
使用awk,
$ awk -F"[0-9][0-9]:[0-9][0-9]" '/\//{print $NF}' file
/work/foo/processed/25
/work/foo/processed/myproxy
/work/foo/processed/sample
答案 1 :(得分:1)
perl -lanF"\s+" -e 'print @F[-1] unless /^Found/' file
以下是使用的命令行开关的说明:
-l: remove line break from each line of input, then add one back on print -a: auto-split each line of input into an @F array -n: loop through each line of input -F: the regexp pattern to use for the auto-split (with -a) -e: the perl code to execute (for each line of input if using -n or -p)
如果您只想输出目录路径的最后一部分,并且basedir总是'/ work / foo / processed',我会这样做:
perl -nle 'print $1 if m|/work/foo/processed/(\S+)|' file
答案 2 :(得分:0)
如果你知道列将是相同的,并且你总是列出完整的路径名,你可以尝试类似的东西:
ls -l | cut -c79-
直到结束时才会删除第79个字符。这可能适用于这种情况,但我认为最好找到最后一个字段的基本名称。您可以在awk或perl中轻松完成此操作。如果这不是你想要的,我会回复,我会添加awk和perl版本。
答案 3 :(得分:0)
获取ls命令的输出并将其传递给awk
your command|awk -F'/' '{print $NF}'
答案 4 :(得分:0)
your_command | perl -pe 's#.*/##'
答案 5 :(得分:0)
试试这个:
<Your Command> | grep -P -o '[\/\.\w]+$'
OR if the directory '/work/foo/processed' is always static then:
<Your Command>| grep -P -o '\/work\/foo\/processed\/.+$'
-o : Show only the part of a matching line that matches PATTERN.
-P : Interpret PATTERN as a Perl regular expression.
在此示例中,输入中的最后一个单词将匹配。 (该单词也可以包含点(s)),因此可以匹配“text_file1.txt”等文件名。 当然,您可以根据您的要求更改模式。