在.bashrc函数中使用awk

时间:2015-10-28 06:26:51

标签: bash awk

我试图让Internet Archive Save Page函数在bash中运行。我添加了一个分号,并按照this StackOverflow question的建议逃避$ s。

当我尝试执行它时,我仍然收到以下错误:

awk: cmd. line:1: {print
awk: cmd. line:1:       ^ unexpected newline or end of string

这是我目前的版本。我一直在尝试各种版本,转义引号等等。所有这些都有相同的错误。

function ia-save() { curl -s -I "https://web.archive.org/save/\$1" | grep Content-Location | awk \'{print https://web.archive.org\$2\}\'; }

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试:

function ia-save() {
    curl -s -I "https://web.archive.org/save/$1" |
    grep Content-Location |
    awk '{printf( "https://web.archive.org/%s\n",$2)}';
}

在$ 1前面删除了一个看起来错位的反斜杠。

答案 1 :(得分:1)

基本上它只是一个语法错误;你不能逃避awk程序周围的单引号。

但是,如果您同时使用grepawk,则可能使用的工具太多了。不使用grep

检查此示例
function ia-save() {
    curl -s -I "https://web.archive.org/save/$1" | \
    awk '/Content-Location/{print "https://web.archive.org/"$2}'
}