我是bash脚本的新手。在我的脚本中,我需要删除不以' a'开头的行。来自文本文件的字符,在temp.txt文件中写入这些行。我使用awk的这种语法来完成这项工作。
from flask import Flask, redirect, request, render_template
app = Flask("app_name")
@app.route('/', methods=["GET", "POST"])
def login_route():
if request.method == "GET":
return render_template("login_page.html")
elif request.method == "POST":
# Login user
return redirect("main_page", code=303)
@app.route("/")
def main_page():
return "I'm the main page."
app.run(host="0.0.0.0", port=5001)
当我运行脚本时,它在开头说出所有不以值开头的行,然后是以值开头的行。 有人可以向我解释为什么会发生这种情况并最终建议我进行更正吗?
答案 0 :(得分:1)
基本上你可以使用grep
:
grep -v '^a' file1 > file2
^
匹配行的开头。 ^a
与该行开头的a
匹配。 -v
否定匹配意味着grep将输出所有不以a
开头的行。
如果要将变量传递给该命令,则需要使用双引号而不是单引号:
grep -v "^$value" file1 > file2
但要注意$value
将被解释为正则表达式的事实。例如,如果value=.
,它将匹配任何字符,而不仅仅是文字.
。
为了避免这种情况,awk再次浮现在脑海中,这是我的最终建议:
awk -v value="$value" 'substr($0,0,length(value)) != value' file1 > file2
答案 1 :(得分:1)
变量不会用单引号扩展。你的脚本做的是它排除了以字符串$value
开头的所有行,后面跟着空格。