sed 无法在 bash 脚本中工作

2024-01-11

我已经搜索了几个小时来寻找这个问题的答案,这似乎简单得令人沮丧......

我有一个 bash 脚本,我对其进行了简化,以找到阻止其工作的行,并留下:

#!/bin/bash
#
sed -i -e "s/<link>/\n/g" /usb/lenny/rss/tmp/rss.tmp

如果我运行此脚本,文件 rss.tmp 不会发生任何变化 - 但如果我从终端调用完全相同的 sed 命令,它会按预期进行所有替换。

有人知道我在这里做错了什么吗?


根据讨论,该问题听起来像是 cygwin shell 问题。 问题是 shell 脚本可能没有 \r\n 行终止符 - 它们需要 \n 终止符。早期版本的 cygwin 的行为有所不同。 Cygwin 常见问题解答中的相关部分位于http://cs.nyu.edu/~yap/prog/cygwin/FAQs.html http://cs.nyu.edu/~yap/prog/cygwin/FAQs.html



Q: Mysterious errors in shell scripts, .bashrc, etc


    A: You may get mysterious messages when bash reads
    your .bashrc or .bash_profile, such as
        "\r command not found"
    (or similar).  When you get rid of empty lines, the
    complaints about "\r" disappears, but probably other
    errors remain.  What is going on?

    The answer may lie in the fact that a text file (also
    called ASCII file) can come in two formats:
    in DOS format or in UNIX format. 
    Most editors can automatically detect the formats
    and work properly in either format.
    In the DOS format, a new line is represented by two characters:
    CR (carriage return or ASCII code 13) and LF (line feed or ASCII code 15).
    In the UNIX format, a new line is represented by only
    one character, LF.  When your .bashrc file is read,
    bash thinks the extra character is the name of a command,
    hence the error message.

    In Cygwin or unix, you can convert a file INFILE in DOS format
    to a file OUTFILE in Unix format by calling:

        > tr -d '\15'  OUTFILE

    NOTE:
    If you now compare the number of characters in INFILE and OUTFILE,
    you will see that the latter has lost the correct
    number of characters (i.e., the number of lines in INFILE):

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

sed 无法在 bash 脚本中工作 的相关文章

  • 字符串索引和替换

    我今天刚刚遇到这个问题 想知道是否有人知道为什么这个测试可能会失败 取决于文化 目的是检查测试文本是否包含两个相邻的空格 这是根据string IndexOf 即使我告诉字符串替换所有出现的两个相邻空格 经过一些测试似乎 xAD以某种方式导
  • 如何使用 bash 测试文件系统的目录限制

    我需要测试可以在文件系统 网络安装驱动器和本地 USB 驱动器 上创建多少目录和文件 我现在使用这个 bash 行 for i in 0 999999 do mkdir p i pushd i done 我知道可能可以做得更好 并且我想知道
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件
  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关
  • Bash 参数引号和 eval

    我编写了一个 bash 日志记录库 用我公司当前正在使用的一些复杂脚本来实现 在进行日志调用时 我一直致力于提供调用脚本的脚本文件名 BASH SOURCE 和行号 LINENO 但是 我不想依赖用户或实现脚本来将这两个变量作为参数传递 如
  • 卷曲:参数列表太长

    我想通过 Sparkpost API 使用curl post 发送一封附有pdf 文件的电子邮件 插入我使用的 pdf 我的 test pdf 约为 200KB data cat test pdf base64 wrap 0 但不知怎的 这
  • 用于编辑 /etc/sudoers 文件的正则表达式模式

    我想删除 etc sudoers 文件中的 uncommnet 轮组 那么我应该使用什么正则表达式模式 cat etc sudoers Allows members of the sys group to run networking so
  • 使用 sed 和 grep/egrep 进行搜索和替换

    我在用egrep R后跟包含大约 10 个并集的正则表达式 如下所示 jpg png gif等等 这很好用 现在我想替换所有找到的字符串 bmp 我在想类似的事情 egrep lR jpg png gif sed s some expres
  • 如何将查找结果传递给 CP,以便带空格的文件名起作用 [重复]

    这个问题在这里已经有答案了 我正在尝试将带有特定附件的文件复制到不同的目录 并保留其相对路径 从我调用的原始顶部路径 cp parents find name pdf print new path 我相信这有效 但仅当找到的文件名称中没有空
  • 无需 root 访问权限即可安装 zsh? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有可能 以及如何 我确实需要在几台具有 ssh 访问权限 但没有 root 访问权限 的远程计算机上使用此功能 下载 zsh wget O zsh t
  • 将 mysql 查询输出存储到 shell 变量中

    我需要一个变量来保存从数据库检索的结果 到目前为止 这基本上是我正在尝试但没有成功的事情 myvariable mysql database u user p password SELECT A B C FROM table a 正如你所看
  • 在后台使用 HERE_DOC 方法运行脚本

    我有一个应该在后台运行的脚本 我必须在运行 bash 后立即回答一个问题 我该怎么做 nohup python script py lst lt
  • shell解析json并循环输出组合变量

    杰斯克喜欢我之前的话题 https stackoverflow com questions 74063588 shell parsing json contains spaces in string 我知道如何解析带有空格的简单 json
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 替换javascript中字符串中的多个字符

    我得到了这段不错的代码 但我不知道为什么不起作用 出于兼容性目的 它应该获取文本输入的值并用 HTML 代码替换每个给定的国家字符 但是 当我单击按钮时 该函数返回字符串而不进行任何更改 任何想法 jsfiddle http jsfiddl
  • Docker exec linux 终端创建别名

    我有一个正在运行且独立的容器 我想在附加到该容器之前创建一个命令别名 当我连接到容器并输入 alias bar foo 创建别名 并可以通过以下方式检查 alias command 但如果我想做同样的事情码头执行者命令即这样 docker
  • Bash:产生当父脚本退出时退出的子进程

    我想在 Bash 中生成多个子进程 但我希望父脚本保持运行 这样发送到父脚本的信号也会影响生成的子进程 这不会这样做 parent bash usr bin bash spawnedChildProcess1 spawnedChildPro
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 独特的 Linux 文件名,可按时间排序

    以前我用的是uuidgen http man7 org linux man pages man1 uuidgen 1 html创建唯一的文件名 然后我需要通过 bash 脚本按日期 时间迭代该文件名 从那时起 我发现简单地通过 ls l 循

随机推荐

  • c3p0中的资源无法检出的原因是什么?

    因此 我正在研究 c3p0 API 来调试我们的一个生产问题 该问题导致在检查连接时出现堆栈溢出错误 我发现下面的评论BasicResourcePool班级的checkoutResource method This function rec
  • Vuetify 标准设置(babel/eslint)图像加载失败

    我正在开发一个 VueJS 项目 并尝试在轮播上加载图像 我正在使用标准设置并将图像放在资产文件夹中 我引用图像 URL
  • Storybook 需要导出默认的 Ant Design 组件才能应用样式

    我希望使用 Ant Design 设计一些 React 组件 并将它们记录在 Storybook 中 故事书和组件都编写正确且有效 模态故事 js import React from react import action from sto
  • python中具有相同名称的对象引用不同的id

    在下面的代码片段中 两个对象名为div在第 1 行和第 2 行创建 python如何区分两者div在同一作用域下创建的对象 When id 应用于两个对象 对于相似的命名对象会显示两个不同的地址 为什么会这样呢 def div a b re
  • webclient 方法对我的 Silverlight 应用程序不可用

    尝试用 C 进行基本的 Web 客户端数据拉取 这些方法在 Visualstudio 中不可用 并且代码无法编译 snip WebClient client new WebClient byte resp client DownloadDa
  • Pytorch:交叉熵损失中的权重

    我试图通过一个实际的例子来理解 CrossEntropyLoss 中的权重是如何工作的 所以我首先运行标准 PyTorch 代码 然后手动运行 但损失并不相同 from torch import nn import torch softma
  • Keras:网络不使用 fit_generator() 进行训练

    我在大型数据集上使用 Keras 使用 MagnaTagATune 数据集进行音乐自动标记 所以我尝试将 fit generator 函数与自定义数据生成器一起使用 但损失函数和指标的值在训练过程中不会改变 看起来我的网络根本没有训练 当我
  • 如何在 Ubuntu 上修复 Nokogiri?

    我在我的工作站上运行 Ubuntu 13 04 并使用 ruby 2 0 0 它是通过 RVM 安装的 aptitude 显示 libxml2 Package libxml2 State installed Automatically in
  • java扩展类有两种类型

    在java中我有以下内容 ClassA obj new ClassB where ClassB extends ClassA 是类型的对象ClassA or ClassB或两者 如果我们有 ClassB obj new ClassB 看来很
  • Grails3文件上传maxFileSize限制

    我正在尝试更新 Grails 3 中的文件上传 maxFileSize 限制 并尝试了以下配置src main resources application properties application groovy and applicat
  • Chisel 中的矩阵运算

    Chisel是否支持加法 乘法 转置等矩阵运算 如果没有 实施它们的最佳方法是什么 向量怎么样 Chisel 不支持矩阵运算 它是一种用于编写实现此类操作的硬件生成器的 DSL 有关专用数学硬件生成器的示例 请参阅 Hwacha 硬件矢量单
  • 列出用户在过去几天签入 TFS 的所有文件

    我们有很多项目 每个项目都有几个文件 可以从主解决方案根 项目级别和个人级别签入文件 有没有办法找到特定用户在过去几天签入的所有级别的所有文件 如果安装了 TFS 电动工具 则可以在 Visual Studio 命令提示符下使用命令 tfp
  • 断言接口的类型

    在一般情况下 我无法优雅地将图像的像素作为数组获取 f err os Open imgPath check err defer f Close img err image Decode bufio NewReader f check err
  • 如何使用意图共享来共享 gif 图像到可用的应用程序?

    我想与 Whatsapp 等可用应用程序共享 gif 但无法获取我的可绘制资源中存在的 gif 的有效 Uri Uri path Uri parse android resource my package name R drawable g
  • 在Keras“ImageDataGenerator”中,“validation_split”参数是一种K折交叉验证吗?

    我正在尝试对 Keras 模型进行 K 折交叉验证 使用 ImageDataGenerator 和 flow from directory 用于训练和验证数据 我想知道 ImageDataGenerator 中的参数 validation
  • VSTO问题-无法创建Visual Studio Excel工作簿项目

    当我尝试在 Visual Studio 2008 中创建 Excel 2007 工作簿项目时 收到以下错误消息 无法创建项目 因为 Excel Visual Studio 设计时适配器加载项 无法正常工作 Excel 可能已禁用该加载项或使
  • 存在类型和重复参数

    Scala 中重复参数的类型是否可能具有存在类型范围 动机 In 这个答案 https stackoverflow com a 11517724 334519我使用以下案例类 case class Rect2D A N lt Nat row
  • 选择每月记录表格数据库

    mysql gt SELECT FROM con transactions t id p id date amount 10 1 2016 02 17 19 24 05 1800 12 2 2016 02 18 11 40 13 200 1
  • Java/JSF i18n 长文本(术语、常见问题解答)

    在大多数情况下 我只是在页面的某个地方组合了很多短文本字符串 但在某些情况下 我只有一个包含长静态文本的页面 例如术语或常见问题解答 现在 只需将该段落也放入资源包中 或者构建一个到 terms en xhtml 的切换 依此类推 在 JS
  • sed 无法在 bash 脚本中工作

    我已经搜索了几个小时来寻找这个问题的答案 这似乎简单得令人沮丧 我有一个 bash 脚本 我对其进行了简化 以找到阻止其工作的行 并留下 bin bash sed i e s n g usb lenny rss tmp rss tmp 如果