我正在尝试编写一个bash脚本来获取用户输入,检查包含该输入的行的.txt,然后将其插入到wget语句中以开始下载。
在测试功能时,awk似乎会打印出每一行,而不仅仅是模式匹配的行。
chosen=DSC01985
awk -v c="$chosen" 'BEGIN {FS="/"; /c/}
{print $8, "found", c}
END{print " done"}' ./imgLink.txt上面的代码应该取自imgLink.txt,搜索该模式并返回找到该模式。相反,它打印文件中每一行的第8个字段。
我尝试将/c/移出begin语句,但无济于事。
这里发生了什么事?
示例输入:
https://xxxx/xxxx/xxxx/xxxx/xxx/DSC01533.jpg
https://xxxx/xxxx/xxxx/xxxx/xxx/DSC01536.jpg
https://xxxx/xxxx/xxxx/xxxx/xxx/DSC01543.jpg
https://xxxx/xxxx/xxxx/xxxx/xxx/DSC01558.jpg
https://xxxx/xxxx/xxxx/xxxx/xxx/DSC01565.jpg等。
输出示例:
..。
DSC02028.jpg找到DSC01985
DSC02030.jpg找到DSC01985
DSC02032.jpg找到DSC01985
DSC02038.jpg找到DSC01985
DSC02042.jpg找到DSC01985等。
发布于 2020-05-27 17:38:48
你的尝试已经很接近了,你不能搜索像/var/这样的awk变量,为此你需要不同的方法。您可以尝试following.Considering,您想要查看的字符串将出现在URL值(S),您目前已在您的帖子xxx。
awk -v c="$chosen" -F'/' '$0 ~ c{print $NF " found " c}' Input_file不确定为什么要在END块中编写done,如果需要,可以在此处添加它。此外,$NF表示当前行的最后一个字段,您也可以根据需要打印它。
https://stackoverflow.com/questions/62039747
复制相似问题