Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
Chuizi997
V2EX  ›  Linux

awk 的 pattern 在 shell 脚本中如何调用位置参数?

  •  
  •   Chuizi997 · Feb 13, 2021 · 2873 views
    This topic created in 2091 days ago, the information mentioned may be changed or developed.

    就是希望在执行脚本时传递一个 $1 作为脚本中 awk 的 pattern

    awk '/$1/{print}' #
    

    如何实现这样的效果 $1 被理解成位置参数,而不是第一列

    5 replies  •  2021-02-14 04:03:40 +08:00
    hcymk2
    hcymk2
    Feb 13, 2021
    1
    -v var=val --assign=var=val
    zlowly
    zlowly
    Feb 13, 2021
    2
    不是很理解你说的“ $1 被理解成位置参数”是什么意思,是指$1 为调用 awk 的 shell 脚本的参数吗?
    如果是,那么你可以用-v 传递变量进 awk 然后再利用。例如
    awk -v mypattern="$1" '$0 ~ mypattern {print}'
    这样就把$1 赋值到 awk 里的变量 mypattern,而这个 mypattern 变量就可以用~来进行匹配运算。
    churchmice
    churchmice
    Feb 13, 2021❤️1
    3
    awk "/$1/{print}" #

    换成"",首先 shell 会帮你做替换,替换完了才会给 sed
    churchmice
    churchmice
    Feb 13, 2021
    4
    可以继续扩展,比如你想要 echo 出一个 '""'怎么做?
    "" ''只是 shell 用来定界用的,想明白了这一点,你可以随便传你想要的


    echo "'"'""'"'"
    FurN1
    FurN1
    Feb 14, 2021 via iPhone
    5
    @churchmice 对头。

    另外补充 bash 和 zsh 对单双引号的处理不一样,不知道其他的 shell 的处理都是什么样的。我一般会向 bash 看齐,写在 shebang 行。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2421 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:55 · PVG 22:55 · LAX 06:55 · JFK 09:55
    ♥ Do have faith in what you're doing.