我有以下 awk 脚本:
#! /bin/awk -f
BEGIN { FS = ":" }
{ print $1 " " $2 " " $3 " " $4 " " }
我想用“#!/bin/bash”编写一个 bash 脚本,但我需要包含一个文件;当程序显示文件时。
#! /bin/bash
awk -f, '
FILENAME= $1
BEGIN { FS = ":" }
{ print $1 " " $2 " " $3 " " $4 " " }
'
在上面的代码中,我尝试包含该文件但它不起作用?
最佳答案
不太清楚你想在这里传递什么。你想要一个获取文件名作为值的变量吗?最简单的方法是使用 -v var=value
:
#! /bin/bash
awk -v MYFILENAME="$1" '
BEGIN { FS = ":" }
{ print MYFILENAME " " $1 " " $2 " " $3 " " $4 " " }
'
请注意,FILENAME 是一个保留变量,您不能设置它。
或者你想传递输入文件?在那种情况下,您只需将它们传递给程序,如:
#! /bin/bash
awk '
BEGIN { FS = ":" }
{ print MYFILENAME " " $1 " " $2 " " $3 " " $4 " " }
' "$1"
-f
选项是包含一个 awk
脚本,顺便说一下。所以 -f,
会要求 AWK 包含一个名为 ,
的文件。
在 shell 级别,确保始终用 "..."
将变量括起来,如 "$1"
中那样,以便正确处理带空格的文件名。
关于linux - AWK/bash 如何在 AWK 中包含文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269181/