【问题标题】:Creating directories with spaces using awk and mkdir使用 awk 和 mkdir 创建带空格的目录
【发布时间】:2014-02-14 19:39:01
【问题描述】:

我正在编写一个 bash 脚本,通过使用 awk 的输出来创建名称中带有空格的文件夹。

getAuthors() {
    echo "$1" | awk -F ', |, and |and ' '{ for (i =1; i<=NF; i++) system("mkdir "$i" ") }'
}

这个函数将接收一个类似于“Sokratis Katsikas and Isaac Agudo (eds.)”的字符串。我正在从 pdf 中获取所有作者,并且必须根据我为 awk 字段分隔符创建的正则表达式来拆分它们。但是,当我尝试调用 mkdir 为每个单独的作者创建文件夹时,它会尝试为每个单独的单词创建一个目录。例如。对于我使用的示例字符串,它将 Sokratis Katsikas 从 Isaac Agudo (eds.) 中分离出来,但 mkdir 将尝试为 Sokratis、Katsika、Isaac 和 Agudo 创建单独的文件夹。如何做到这一点,以便对 mkdir 的调用保留空格,而不是尝试为每个单词创建文件夹?

【问题讨论】:

    标签: bash awk


    【解决方案1】:

    让您的 system 函数带有额外的引号:

    system("mkdir \"" $i "\"")
    

    【讨论】:

      【解决方案2】:

      添加一个将空间更改为 \space 的 sed 命令。

      【讨论】:

      • 我对 bash 脚本很陌生,所以我不确定你的意思。
      • sed -i 's/ /\\ /' 文件名
      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2018-02-06
      • 2012-12-04
      • 1970-01-01
      相关资源
      最近更新 更多