如何从文本文件中 grep 文件路径?

如何从文本文件中 grep 文件路径?

我有一个包含路径列表的文件,如下所示:

"1"       "/user/bin/share"
"2"       "/home/user/.local"
"3"       "/root/"

有没有办法提取只是路径?我不需要数字或引号。如何 sed 或 grep 文件中的路径?这样的任务需要什么正则表达式?

答案1

如果所有路径都以 开头/,您可以只匹配/后跟一系列非"字符:

$ grep -o '/[^"]*' file
/user/bin/share
/home/user/.local
/root/

或者,对于更结构化的方法,可以使用awk从第二个字段中删除引号并仅打印第二个字段:

awk '{gsub(/"/,"",$2); print $2}' file

答案2

假设路径不包含换行符,

$ sed 's/^.*[[:blank:]]"//; s/"$//' <file
/user/bin/share
/home/user/.local
/root/

sed代码首先删除每行上的所有内容,直到并包括"前面有空格(空格或制表符)的第一个字符。然后它会删除"末尾的 。

这允许路径包含空格和嵌入"字符,但不允许包含空白+组合"

答案3

为什么不一个简单的

awk -F\" '{print $4}' file
/user/bin/share
/home/user/.local
/root/

工作?

答案4

简单的方法。使用 . 取出字段#4,并用引号作为分隔符cut

$ cut -f4 -d\" file
/user/bin/share
/home/user/.local
/root/
$

相关内容