命令的输出看起来像这样
# ls -l abc.zip
lrwxrwxrwx 1 sri dba 122 Mar 27 23:37 /a/b/c/abc.zip -> /x/y/z/abc.zip
我需要提取/剪切->
之后的整个路径。我使用过cut -f -d
但是有些时候没用,我猜列号正在改变。所以我需要sed
相当于此。
答案 0 :(得分:1)
这可能适合你(GNU sed):
sed -n 's/^l.*->\s*//p' file
答案 1 :(得分:1)
您正在阅读的是有关符号链接的信息。 Parsing ls
is definitely a bad idea
使用readlink怎么样?它读取符号链接的值:
readlink abc.zip
或-f
代表完整路径:
readlink -f abc.zip
查看示例:
$ touch a
$ ln -s a b # we create a symbolic link "b" to the file "a"
$ ls -l b
lrwxrwxrwx 1 me me 1 Apr 6 09:54 b -> a
$ readlink -f "b" # we check the full "destination" of the symlink "b"
/home/me/a
$ readlink "b" # we check the "destination" of the symlink "b"
a
答案 2 :(得分:0)
使用' cut'你只能指定单个字符分隔符。
对于字符串分隔符,一个简单明了的选项是awk。在你的情况下尝试:
ls -ls abc.zip | awk -F '->' '{print $2}'