bash - 在 awk 脚本头中指定其他标志
问题描述
我想使用#!/bin/awk -f
标题编写一个 awk 脚本文件,但我希望此脚本始终:
用作字段分隔符。但由于某种原因,写作#!/bin.awk -F: -f
给了我一个语法错误。我还希望这个脚本始终在同一个文件上运行,所以我也想对其进行硬编码。基本上,我想要工作的是:
#!/bin/awk -F: -f -- /etc/passwd
后面跟着一些 awk 代码
解决方案
许多系统在 shebang 行中只允许一个参数,因此空格之后的所有内容都作为一个参数传递。
但是,您FS
甚至可以ARGV
在脚本的BEGIN
块中进行设置,如下所示:
#!/bin/awk -f # using the #!/bin/awk -f
BEGIN {
FS=":" # always use : as a field separator
ARGC=2
ARGV[1]="/etc/passwd" # always run on the same file
}
$3==0 { # followed by some awk code
print $1
}
运行:
$ chmod u+x program.awk
$ ./program.awk
root
推荐阅读
- java - 如何使用 liquibase 将旧数据库模式更新为 Java 中的新模式
- eclipse - Is it possible to use variable names in eclipse project references?
- ios - 如何在标题部分对 iOS 共享表图像进行编程。(见附图)
- python - Python:如果条件为 NaN,Pandas 添加字符串
- python - comparing values from one row to all other rows in pandas
- python - Python how do you find the max value of population in a txt. file that has records of each state with its abbreviation and population
- python - psycopg2.errors.SyntaxError: ' 处或附近的语法错误
- java - 制作 TableView 项目的副本
- java - Java create dynamic but simple graphic using Graphics
- ada - 添加派生类型是接口的重大更改吗?