当值有空格时如何从bash脚本中打印CSV值

迈哈布纳什(maihabunash)

我有以下CSV文件(我有linux red-hat 6.2版本)

# more  SIMPLE_FILES.CSV
  FILE1,FILE2,FILE3
  /etc/hosts,/etc/info.txt,/var/log.txt
  /etc/some_file,/var/collect.txt,/etc/INFO.txt
  /sbin/ls,/sbin/awk,/sbin/sed

 # more COMPLEX_FILES.CSV
   FILE1,FILE2,FILE3
   /etc/config/net ip.txt,/var/log/summary snap/LOG OF global/info.txt
   /etc/hosts files hosts.info/etc/hosts,var/log/messages,/sbin/collect file/all.info
   /etc/old/TEXT INFO/info.txt/etc/OLD FILES/info.txt,/root/customor select/info.txt

以下bash脚本应读取CSV文件并打印FILE1,FILE2,FILE3的文件PATH

备注-我仅以CSV_LINE = 2参数设置(CSV中的第二个值)

 #!/bin/bash


 CSV=SIMPLE_FILES.CSV

 CSV_LINE=2

 eval $(awk -v A=$CSV_LINE -F, 'NR==1 { for (i=1; i<=NF; i++) sn[i]=$i }
            NR==A { for (i=1; i<=NF; i++) print sn[i] "=" $i; exit }' $CSV  )


 echo $FILE1
 echo $FILE2
 echo $FILE3

因此,如果我运行bash脚本(当我设置CSV = SIMPLE_FILES.CSV时),请获取以下内容

 /read_path_from_csv.bash


 /etc/hosts
 /etc/info.txt
 /var/log.txt

到现在为止,

但是如果我运行bash脚本(当我设置CSV = COMPLEX_FILES.CSV时),将得到以下结果

  ./read_path_from_csv.bash: line 20: ip.txt: command not found

我的结论-似乎PATH中的空格导致了此错误

请提供有关如何更新我的代码的建议,以打印COMPLEX_FILES.CSV中定义的PATH

如何添加一个路径和一个前路径之后?

应该得到的示例

/read_path_from_csv.bash

/etc/config/net ip.txt,/var/log/summary snap/LOG OF global/info.txt
/etc/hosts files hosts.info/etc/hosts,var/log/messages,/sbin/collect file/all.info
/etc/old/TEXT INFO/info.txt/etc/OLD FILES/info.txt,/root/customor select/info.txt
WKPlus

是的,它是导致此问题的PATH中的空格,您可以添加引号来避免它。

eval $(awk -v A=$CSV_LINE -v q='"' -F, 'NR==1 { for (i=1; i<=NF; i++) sn[i]=$i }
            NR==A { for (i=1; i<=NF; i++) print sn[i] "=" q $i q; exit }' $CSV)

解释:

如果您eval 'FILE1=/path/file name'在bash中运行,它将给出一个错误:

-bash: name: command not found

并且您可以引用该/path/file name零件以避免此错误:

> eval 'FILE1="/path/file name"'
> echo $FILE1
/path/file name

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确处理和打印bash中带有空格的文件

来自分类Dev

Bash脚本读取路径中带有空格的文件

来自分类Dev

bash脚本中带有空格的名称数组

来自分类Dev

bash脚本中带有空格的名称数组

来自分类Dev

Bash脚本读取路径中带有空格的文件

来自分类Dev

如何将文件复制到 Bash 脚本中带有空格的路径?

来自分类Dev

Bash脚本:打印一列,字符串之间留有空格

来自分类Dev

如何将带有空格的参数从bash脚本传递到bash脚本?

来自分类Dev

如何打印没有空格的“*”?

来自分类Dev

读取bash脚本中的输入,该脚本是路径中带有空格的目录

来自分类Dev

有空格时如何停止存储文件中的字符

来自分类Dev

bash脚本创建并cd到名称中带有空格的目录

来自分类Dev

ffmpeg:bash脚本中带有空格的文件名

来自分类Dev

bash脚本在源路径中带有空格的SCP错误

来自分类Dev

打印变量和文本时没有空格?

来自分类Dev

使用bash脚本从.CSV文件中打印多个值

来自分类Dev

如何在Python中打印变量和字符串之间没有空格

来自分类Dev

给定一行,如何打印没有空格?

来自分类Dev

Shell脚本如何在变量中传递带有空格的参数

来自分类Dev

如何在列中打印文本(定界符=空格,忽略内部带有空格的特定列)?

来自分类Dev

如何在bash中访问名称中带有空格的环境变量?

来自分类Dev

如何在Shell脚本中打印空格

来自分类Dev

如何在 shell 脚本中打印空格

来自分类Dev

使用bash脚本在文件夹中创建文件,文件中的名称带有空格

来自分类Dev

如何使用python中的panda库读取名称中有空格的CSV列

来自分类Dev

如何将字符串转换为Bash中的所有空格?

来自分类Dev

如何在bash中整体处理带有空格的字符串?

来自分类Dev

我如何制作一个脚本,该文件会带有空格的awk .txt文件读取.csv?

来自分类Dev

如何获取xsl文件中带有空格的字段的值

Related 相关文章

  1. 1

    如何正确处理和打印bash中带有空格的文件

  2. 2

    Bash脚本读取路径中带有空格的文件

  3. 3

    bash脚本中带有空格的名称数组

  4. 4

    bash脚本中带有空格的名称数组

  5. 5

    Bash脚本读取路径中带有空格的文件

  6. 6

    如何将文件复制到 Bash 脚本中带有空格的路径?

  7. 7

    Bash脚本:打印一列,字符串之间留有空格

  8. 8

    如何将带有空格的参数从bash脚本传递到bash脚本?

  9. 9

    如何打印没有空格的“*”?

  10. 10

    读取bash脚本中的输入,该脚本是路径中带有空格的目录

  11. 11

    有空格时如何停止存储文件中的字符

  12. 12

    bash脚本创建并cd到名称中带有空格的目录

  13. 13

    ffmpeg:bash脚本中带有空格的文件名

  14. 14

    bash脚本在源路径中带有空格的SCP错误

  15. 15

    打印变量和文本时没有空格?

  16. 16

    使用bash脚本从.CSV文件中打印多个值

  17. 17

    如何在Python中打印变量和字符串之间没有空格

  18. 18

    给定一行,如何打印没有空格?

  19. 19

    Shell脚本如何在变量中传递带有空格的参数

  20. 20

    如何在列中打印文本(定界符=空格,忽略内部带有空格的特定列)?

  21. 21

    如何在bash中访问名称中带有空格的环境变量?

  22. 22

    如何在Shell脚本中打印空格

  23. 23

    如何在 shell 脚本中打印空格

  24. 24

    使用bash脚本在文件夹中创建文件,文件中的名称带有空格

  25. 25

    如何使用python中的panda库读取名称中有空格的CSV列

  26. 26

    如何将字符串转换为Bash中的所有空格?

  27. 27

    如何在bash中整体处理带有空格的字符串?

  28. 28

    我如何制作一个脚本,该文件会带有空格的awk .txt文件读取.csv?

  29. 29

    如何获取xsl文件中带有空格的字段的值

热门标签

归档