UNIX:查找行
UNIX: Finding lines
我需要编写一个小脚本,它根据正则表达式(例如“^folder#”)查找行,并在匹配的地方写入行数。
我的想法是,我将使用 "find",然后删除所有斜杠,然后使用带有正则表达式的 grep。
我不知道为什么它不起作用。你能给我一些建议如何改进,或者我应该如何找到与另一个功能的线路?
在
./example
./folder/.DS_Store
./folder/file.png
出来
2: ./folder/.DS_Store
3: ./folder/file.png
IGN="^folder$"
find . -type f | sed -e "s/\// /g" | grep -n "${IGN}"
你说你想使用 ^folder$
模式,但你想得到如下输出:
2: ./folder/.DS_Store
3: ./folder/file.png
这两个要求相互矛盾。像 ./folder/.DS_Store
这样的行无法匹配模式 ^folder$
,因为该行不是以 "folder" 开头,也不以 "folder".
结尾
要获得您描述的输出,您需要将与 grep
一起使用的模式更改为 ^\./folder/
你试过了
IGN="^folder$"
find . -type f | sed -e "s/\// /g" | grep -n "${IGN}"
此脚本无效,因为 IGN 寻找行首,而不是字首。
您可以使用
从路径的各个部分制作线条
IGN="^folder$"
find . -type f | tr -s "/" "\n" | grep -n "${IGN}"
我需要编写一个小脚本,它根据正则表达式(例如“^folder#”)查找行,并在匹配的地方写入行数。
我的想法是,我将使用 "find",然后删除所有斜杠,然后使用带有正则表达式的 grep。 我不知道为什么它不起作用。你能给我一些建议如何改进,或者我应该如何找到与另一个功能的线路?
在
./example
./folder/.DS_Store
./folder/file.png
出来
2: ./folder/.DS_Store
3: ./folder/file.png
IGN="^folder$"
find . -type f | sed -e "s/\// /g" | grep -n "${IGN}"
你说你想使用 ^folder$
模式,但你想得到如下输出:
2: ./folder/.DS_Store 3: ./folder/file.png
这两个要求相互矛盾。像 ./folder/.DS_Store
这样的行无法匹配模式 ^folder$
,因为该行不是以 "folder" 开头,也不以 "folder".
要获得您描述的输出,您需要将与 grep
一起使用的模式更改为 ^\./folder/
你试过了
IGN="^folder$"
find . -type f | sed -e "s/\// /g" | grep -n "${IGN}"
此脚本无效,因为 IGN 寻找行首,而不是字首。
您可以使用
IGN="^folder$"
find . -type f | tr -s "/" "\n" | grep -n "${IGN}"