为什么我的 Bash 脚本将 添加到文件开头?

2023-12-19

我编写了一个脚本,使用 sed 清理 .csv 文件,删除一些错误的逗号和错误的引号(不好的,意味着它们破坏了我们用来转换这些文件的内部程序):

# remove all commas, and re-insert the good commas using clean.sed
sed -f clean.sed $1 > $1.1st

# remove all quotes
sed 's/\"//g' $1.1st > $1.tmp

# add the good quotes around good commas
sed 's/\,/\"\,\"/g' $1.tmp > $1.tmp1

# add leading quotes
sed 's/^/\"/' $1.tmp1 > $1.tmp2

# add trailing quotes
sed 's/$/\"/' $1.tmp2 > $1.tmp3

# remove utf characters
sed 's/<feff>//' $1.tmp3 > $1.tmp4

# replace original file with new stripped version and delete .tmp files
cp -rf $1.tmp4 quotes_$1

这是 clean.sed:

s/\",\"/XXX/g;
:a
s/,//g
ta
s/XXX/\",\"/g;

然后它删除临时文件和中提琴,我们有一个以单词“quotes”开头的新文件,我们可以将其用于其他进程。

我的问题是:
为什么我必须制作 sed 语句来删除该临时文件中的 feff 标记?原始文件没有它,但它总是出现在替换文件中。起初我以为 cp 导致了这个问题,但是如果我在 cp 之前放入要删除的 sed 语句,则它不存在。

也许我只是错过了一些东西......


U+FEFF 是一个代码点字节顺序标记 http://en.wikipedia.org/wiki/Byte_order_mark。您的文件很可能包含以 UTF-16 保存的数据,并且 BOM 已被您的“清理过程”损坏,而“清理过程”很可能需要 ASCII。删除 BOM 可能不是一个好主意,而是修复脚本以使其从一开始就不会损坏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 Bash 脚本将 添加到文件开头? 的相关文章

随机推荐

  • Spring bean 的标准命名

    有人知道应用程序上下文中 Spring bean 的标准命名吗 我使用了驼峰命名法 但我不确定是否存在一种标准 我在网上搜索了相关内容 但没有找到任何东西 Bean 命名约定 Spring 框架参考第 1 3 1 节 https docs
  • 使用Excel作为Access数据库的前端(使用VBA)

    我正在为朋友构建一个小型应用程序 他们希望能够使用 Excel 作为前端 UI 基本上是 Excel 中的用户表单 他们在 Excel 中有一堆数据 他们希望能够查询这些数据 但我不想使用 Excel 作为数据库 因为我认为它不适合该目的
  • JBoss 6.4.20 补丁中允许使用哪些版本的 Jackson?

    我正在尝试更新我的 Jackson 版本6 4 20 JBoss补丁 https www redhat com archives rhsa announce 2018 May msg00028 html 我在用着org codehause
  • 匹配 bool 与 const void* 重载的函数的地址

    我正在阅读使用随机数生成器作为 C 中的函数出现意外值 https stackoverflow com questions 27225614 unexpected value using random number generator as
  • MTOM 是如何工作的?

    MTOM 是 W3C 消息传输优化机制 是一种高效地向 Web 服务发送二进制数据或从 Web 服务发送二进制数据的方法 它一般如何运作 这一切都始于 SOAP 的事实XML 当您发送文本以外的任何内容 例如图像 时 必须将其转换为 XML
  • Java 未经检查的操作转换为泛型

    我想知道为什么以下内容会发出有关不安全 未经检查的操作的警告 Map
  • 使用 Puppeteer 将鼠标悬停在 Node.js 中的元素上并获取计算样式?

    我想将鼠标悬停在某个元素上 比如说document getElementById abc 并找到它的悬停计算样式 我应该如何使用 Puppeteer 在 Node js 中执行此操作 您可以使用以下解决方案来迭代并将鼠标悬停在某些元素上以获
  • Unity 3d Sprite Shader(如何在多个灯光照射下将最大亮度限制为 1)

    我正在 Unity 中创建一个视频游戏 每个精灵都使用具有 CornucopiaShader shader 材质的精灵渲染器进行渲染 我遇到的问题是我想将精灵的最大亮度 或颜色 限制为精灵的正常图像 无论有多少点光源照射它的功率 灯光的强度
  • 为什么shared_ptr<>必须分别分配控制块和托管对象?

    这个链接的问题询问是否make shared lt gt 函数和shared ptr lt gt 构造函数不同 使用 make shared 时会发生什么 https stackoverflow com questions 24779929
  • Spring批处理聚合值并写入单个值

    我正在使用 spring Batch 我需要实现以下目标 读取包含日期和金额等详细信息的 csv 文件 汇总同一日期所有金额的总和 保留一项包含日期和总和的条目 我过去使用过批处理 我想到了以下方法 创建一个批次需要 2 个步骤 Step
  • devise Rails current_user 与 user_signed_in?

    我正在使用 Devise on Rails 4 1 我的问题是关于助手以及它们与会话的关系 current user 告诉您是否有可供该用户使用的用户会话 user signed in 告诉您用户是否已通过身份验证 我无法理解如果 user
  • WebClient.DownloadingString 更改请求的 URL

    如果我在浏览器中输入 URL 我的服务器会正 确响应 XML 虽然 如果这个相同的 URL 通过 WebClient DownloadingString 方法 URL 中的某些内容会发生变化 并且我的服务器会正 确响应 但会显示访问被拒绝消
  • 使用 basichttpbinding 调用 wcf webservice,无需 REST 或 JSON

    我有一个通过 wsHTTPBinding 和 basicHTTPBinding 公开的 wcf Web 服务 后者将其端点地址指定为 basic 如下所示
  • 使用 Web api 和 asp.net mvc 5 进行单点登录

    我希望将 SSO 与 Web api 2 2 结合使用 以便在多个应用程序中使用 包括移动和 asp net mvc 5 我了解了通过 Web api 创建身份验证令牌的基本想法 但我有几个问题 1 将身份验证令牌与用户名一起存储在 coo
  • 如何使用 LINQ Contains() 查找枚举列表?

    我有一个名为OrderStatus 它包含订单可以处于的各种状态 Created Pending Waiting Valid Active 处理 完全的 我想要做的是创建一个 LINQ 语句 该语句将告诉我 OrderStaus 是否有效
  • php7.4 mysqli 因“消失”而超时

    我刚刚安装了 php7 4 一切似乎都正常 但是当我尝试继续我的 phpmyadmin 时 我不能 注意在此安装之前在 php7 3 中工作正常 错误是 mysqli real connect Unexpected server respo
  • 将 Ruby 中的持续时间 - hh:mm:ss.sss 转换为毫秒,反之亦然

    我想知道 Ruby 中是否有一个内置方法可以让我将 hh mm ss sss 格式的单圈时间转换为毫秒 反之亦然 由于我需要用它进行一些计算 因此我认为转换为毫秒将是最简单的方法 告诉我我是否错了 这个怎么样 a 1 1000 60000
  • hibernate中的@Fetch注解是什么?

    OneToMany cascade CascadeType ALL fetch FetchType EAGER orphanRemoval true Fetch FetchMode SUBSELECT JoinColumn name ORU
  • 批次中%~1和%1有什么区别?

    在批次中我有时会看到 1用于开关 也用于 1 有什么不同 他们似乎都为我工作 Example if 1 echo No variable specified and if 1 echo No variable specified 似乎可以互
  • 为什么我的 Bash 脚本将 添加到文件开头?

    我编写了一个脚本 使用 sed 清理 csv 文件 删除一些错误的逗号和错误的引号 不好的 意味着它们破坏了我们用来转换这些文件的内部程序 remove all commas and re insert the good commas us