我有一些bash脚本,我获取变量的值,我想在awk中使用。 是否可能在bash中包含整个awk(就像bash脚本文件一样可能)文件,例如:
#!/bin/sh
var1=$1
source myawk.sh
和myawk.sh:
print $1;
答案 0 :(得分:2)
首先,如果您正在编写bash,请不要使用#!/bin/sh
,这将使您处于兼容模式,只有在您编写可移植性时才必须这样做(然后您必须遵守POSIX标准化的)。
现在关于你的问题,你只需要在你的bash脚本中运行awk,就像这样:
#!/bin/bash
var1=$1
awk -f myawk.sh
你也应该使用.awk作为扩展名。
答案 1 :(得分:1)
或者,许多人都这样做:
#!/bin/env bash
#Bash things start
...
var1=$1
#Bash things stop
#Awk things start,
#may use pipes or variable to interact with bash
awk -v V1=var1 '
#AWK program, can even include awk scripts here.
'
#Bash things
我在这里建议Bruce Barnett这个页面:
http://www.grymoire.com/Unix/Awk.html#uh-3
您也可以使用双引号来使用shell的提取功能,但这很令人困惑。
就个人而言,我只是试图避免那些花哨的gnu添加bash或awk并使我的脚本ksh +(n)awk兼容。
答案 2 :(得分:1)
作为一名核心AWK用户,我很快就意识到做以下事情确实是一个巨大的帮助:
#Content of bashrc
export AWK_REPO=~/bin/AWK
.awk
扩展名存储我编写的每个AWK脚本。awk -f $AWK_REPO/myScript.awk $file
export PATH=${AWK_REPO}:${PATH}
)myScript.awk $file