我需要一些帮助:寻找一种方法,使用这样的命令删除超链接中第 n 次出现(很可能是第 4 次或第 5 次)“/”之后的所有内容
cat text.txt | grep -o "^((?:[^/]*/){5}).*$"
Run Code Online (Sandbox Code Playgroud)
这个命令对我不起作用。例如,如果我有
https://www.forbes.com/forbes/welcome/?toURL=https://forbes.com/&refURL=&referrer=
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
https://www.forbes.com/forbes/welcome/
Run Code Online (Sandbox Code Playgroud)
此外,如果链接只有 < 4 /,我想保留所有内容。
第一个解决方案:请尝试以下操作awk。它应该涵盖/?OR 的?(实际请求中可能就是这种情况)。只需为您的 Input_file 的所有行创建字段分隔符/?\\?,并打印该行的第一个字段(如果行从httpORhttps。
awk -F'/?\\?' '/^https?:\/\//{print $1}' Input_file
Run Code Online (Sandbox Code Playgroud)
第二个解决方案:使用 GNUawk并使用其match功能,请尝试以下解决方案,与第一个解决方案相比有点复杂,但您可以尝试一下,以防万一您需要检查更多值,除了之前获取值之外,?它可以帮助您,因为它可以保存值进入数组。
awk 'match($0,/^(https?:\/\/([^?]*))\?/,arr1){print arr1[1]}' Input_file
Run Code Online (Sandbox Code Playgroud)