awk 系统命令,参数中有空格

标签 awk

我正在尝试运行以下命令以从所有 pdf 中提取文本

find *.pdf | awk '{system("pdftotext "$0)}'

但该死的某个疯子在文件名中加了空格,我该如何顺利处理呢?

最佳答案

awk 在其中扮演什么角色?或许您应该让 find 自行执行。

find . -name \*.pdf -exec /path/to/pdftotext {} \;

或者,如果您真的坚持假设文件名作为 stdout 可以安全地找到(您已经证明它们不是简单地通过问这个问题),那么将文件名放在引号中。这将起作用:

find . -name \*.pdf -print | awk '{cmd=sprintf("pdftotext \"%s\"", $0);system(cmd);}'

关于awk 系统命令,参数中有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088576/

相关文章:

csv - (sed/awk) 如何将字段分隔(如 csv)文件转换为具有固定大小的制表符分隔列的 txt?

linux - 如何使用 bash 脚本在日期/时间和另一个日期/时间之间提取日志

bash - 从顶部输出中删除标题

linux - 在管道 awk 语句之间传递变量

bash - 从 BASH 数组变量中删除前导零

awk将两个文件的处理结果合并为一个文件

linux - 将空格视为 n 列后的空格

Linux awk 打印某些文本

sed - 文件中的 DOS 到 UNIX 路径替换

python - 如何从文本中删除小写句子片段?