读取文本文件时如何避免转义字母

问题描述 投票:0回答:1

我正在读取一个以“;”分隔的 CSV 文件。 作为基本示例,请考虑此“file.csv”:

a1;a2;/unixpath/file1;a4
b1;b2;\winpath\file2;b4

某些字段包含 Windows 路径,因此使用反斜杠并且不加引号。

我正在使用这个 bash 脚本:

#!/bin/bash
fileIn="file.csv"
IFS=';'
while read -a lineV ; do
   #echo "lineV: '${lineV[@]}'"
   for ((c=0; c<=3; c++)); do
      field="${lineV[$c]}"
      echo -E "c:$c field:'$field' '${lineV[$c]}'"
   done
   echo "---"
done < $fileIn

输出总是跳过反斜杠,如下所示:

c:0 field:'a1' 'a1'
c:1 field:'a2' 'a2'
c:2 field:'/unixpath/file1' '/unixpath/file1'
c:3 field:'a4' 'a4'
---
c:0 field:'b1' 'b1'
c:1 field:'b2' 'b2'
c:2 field:'winpathfile2' 'winpathfile2'
c:3 field:'b4' 'b4'
---

我尝试添加引号但结果相同。 我添加了 -E 来 echo,结果相同。

如何将反斜杠读作文字“\”?

bash csv backslash
1个回答
0
投票

用途:

while IFS=; read -r -a lineV ; do

强化 while 循环的使用。

© www.soinside.com 2019 - 2024. All rights reserved.