小编tcs*_*aru的帖子

awk ifs 和变量 - 不能将变量从一行传递到后续行

首先,我是 awk 的新手,所以如果它很简单,请原谅。

我正在尝试生成一个包含路径的文件。我为此使用了一个ls -LT清单以及一个 awk 脚本:

这是输入文件的示例:

vagrant@precise64:/vagrant$ cat structure-of-home.cnf

/home/:

vagrant

/home/vagrant:

postinstall.sh
Run Code Online (Sandbox Code Playgroud)

这将是预期的输出:

/home/vagrant
/home/vagrant/postinstall.sh
Run Code Online (Sandbox Code Playgroud)

awk 脚本应执行以下操作:

  1. 检查线路是否具有:在其
  2. 如果是,将字符串(没有:)分配给变量($path在我的情况下)
  3. 如果该行为空,则不打印任何内容
  4. 如果它不为空并且不包含:打印$path当前行$0

这是脚本:

BEGIN{
path=""
}
{
    if ($1 ~ /\:/)
        {
        sub(/\:/,"",$1)
        if (substr($1, length,1) ~ /\//)
            {
            path=$1;
            }
        else
            {
            path=$1"/"
            }
        }
    else if (length($0) == 0)
        {}
    else
        print $path$1
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行脚本时,出现以下混乱:

vagrant@precise64:/vagrant$ awk -f format_output.awk structure-of-home.cnf
vagrantvagrant
postinstall.shpostinstall.sh
Run Code Online (Sandbox Code Playgroud)

请问我做错了什么?

awk

4
推荐指数
1
解决办法
833
查看次数

标签 统计

awk ×1