我尝试摆脱URL中的最后一个斜杠,但前提是该斜杠存在。 有任何想法吗?
tail -1 /var/script/string.txt | grep -oP '(?<=expanded_url":")[^"]+'
响应:
https://research.checkpoint.com/ramnits-network-proxy-servers/
所需的输出:
https://research.checkpoint.com/ramnits-network-proxy-servers
答案 0 :(得分:1)
如果您对awk
没问题,也可以尝试遵循。
var="https://research.checkpoint.com/ramnits-network-proxy-servers/"
echo $var | awk '{sub(/\/$/,"")} 1'
说明: 现在为上述代码添加说明,仅用于说明目的。
var="https://research.checkpoint.com/ramnits-network-proxy-servers/" ##Creating a variable in shell which has value as OP mentioned.
echo $var | awk '{sub(/\/$/,"")} 1' ##Sending echo output to awk command here. In awk command using sub to substitute / which comes in end of line with NULL.
##awk works on method of condition and action, so mentioning 1 is making condition TRUE and not mentioning any action so by default
##Printing of line/variable value will happen.
EDIT: :看到您尝试在此处添加1个解决方案来避免许多命令组合的尝试(这将只读取Input_file的最后一行,然后退出命令因为我已经在其中放入了exit
。
tac Input_file | awk 'FNR==1 && /xpanded_url\":\"/{sub(/\/$/,"");print;exit}'
EDIT2: 在此处添加单个awk
命令,在某些awk
的{{1}}块中,我们无法最后获取我们可以添加两种解决方案,以适合人们的情况。
END
答案 1 :(得分:1)
您可以使用负的前行ConfigureAwait
来检查右边的内容不是可选的正斜杠,后跟双引号。如果不是这种情况,请使用任意字符并重复1次以上。
请参见regex demo
例如:
(?:(?!/?").)+
结果
echo 'expanded_url":"https://research.checkpoint.com/ramnits-network-proxy-servers/"' | grep -oP '(?<=expanded_url":")(?:(?!/?").)+'