sed 相关问题

Sed(Stream EDitor)是POSIX环境的命令行编辑器。 Sed根据编辑脚本处理一个或多个文件,并将结果写入标准输出。它创建于贝尔实验室,自70年代中期以来一直存在。

截断带前缀的长字符串输出,在保留空间的每个转储的底部附加新行

我正在尝试为控制台输出添加前缀,同时将长字符串输出截断为最多 60 个字符。 (防止长行溢出并破坏前缀) 怎么会... esc=$(printf...

回答 1 投票 0

AWK或sed以表格格式打印数据

我有如下数据。 行:1 姓名:阿杰 年龄:45 地址 : zyx 行:2 姓名:阿杰 年龄:45 地址 : zyx 行:3 姓名:阿杰 年龄:45 地址 : zyx 行:4 ...

回答 1 投票 0

Shell 脚本,转义换行符但发出其他内容?

给定一个文件名,我想编写一个 shell 脚本,它发出以下内容,并将其通过管道传输到进程中: 内容长度: { “jsonrpc”:“2.0”,“标准...

回答 3 投票 0

打印带有空格或空格的行

我很难尝试仅打印带有空白的行并排除其余部分,如下所示。 里面的测试.txt 弗朗索瓦|538| 杰拉德|520| 冰尔|548| 冰尔 |787| ieppcnf|791| 伊皮克斯|788| 独立教育普...

回答 1 投票 0

如何在 Cygwin 上的 sed 中处理 UTF-8 表情符号?

我见过很多关于 SED 中转义和替换特殊字符的主题,但没有一个对我有帮助。 我需要在文件上使用这个 sed 命令: sed -i "s/This[^\|]\+/& (酷) /...

回答 3 投票 0

sed 将带有前导空格的行插入到特定行

我在开头有一行空格,例如“Hello world”。 我想将此行插入到文件中的特定行。 例如 将“hello world”插入到下一个文件 ...

回答 4 投票 0

使用 awk 或 sed 替换某些列下的值

我有一个数据,其中包含以“AS_”开头的列下的一些奇怪的值。 这是一个 csv 文件,但为了便于理解,我在文件中添加了空格, sl 无 AS_2f AD_2f SR...

回答 1 投票 0

如何使用sed替换多行字符串?

如何使用 bash sed 命令更改此字符串: 期权指数 FollowSymLinks 允许覆盖无 要求全部授予 进入

sed
回答 7 投票 0

在 shell 脚本中使用正则表达式查找多行文本并替换它

我试图找到两个连续行的模式,其中第一行是固定字符串,第二行有我喜欢替换的部分子字符串。 这需要在 macOS 上的 sh 或 bash 中完成。 如果我...

回答 4 投票 0

在我的降价中使用反引号代码更改斜体文件名

在讨论了在 Markdown 中使用反引号代码作为文件名之后,我现在需要返回所有 .md 文件并将“some.filename.php”更改为“some.filename.php”e...

回答 1 投票 0

使用 sed 搜索两个时间范围之间的文本

我有带有时间戳的日志文件。我想使用 sed 搜索两个时间戳之间的文本,即使第一个时间戳或最后一个时间戳不存在。 例如,如果我在...之间搜索

回答 1 投票 0

重命名文件:删除第一个下划线之前的名称

我有几千个文件需要重命名。 它们的形式为xxxxx_文件名.doc xxxx 是字母数字,但在所有情况下,前缀直到并包括第一个下划线都需要......

回答 1 投票 0

在两个字符串之间查找某些内容,在另一个文件中搜索结果并附加到另一个文件

这就是我想要的。 在文件 1 中提取两个字符串之间的任意数字并将其保存为 var。 然后在文件 2 中搜索这个 var 并将提取的数字和字符串之间的整行附加到

回答 1 投票 0

更换 (换行)bash 中带有空格

我正在从数据库读取一些sql查询到变量中,它包含换行符( )。我想更换 (新行)有空格。我尝试了互联网上提供的解决方案,但没有成功......

回答 2 投票 0

Windows 批处理:如何删除所有空白(或空)行

我正在尝试使用 Windows 批处理程序从文本文件中删除所有空白行。 我知道实现这一点的最简单方法是 bash 通过正则表达式和 sed 命令: sed -i“/^$...

回答 2 投票 0

sed 查找和转换二进制数字表示

我有一个包含二进制数字的文件,我想用 sed -i 内联更改它。 该文件有这样的行: 00018342 0000 dc.b 11010101b 所以我想让它代表这个...

回答 1 投票 0

在 Vim 中将文本添加到不同的文件中

我正在尝试将 Vim 中的文本添加到另一个文件中。特别是当前行,但视觉选择也很好。最终我想将其映射到类似的东西 我正在尝试将 Vim 中的文本添加到另一个文件中。特别是当前行,但视觉选择也很好。最终我想将其映射到类似<leader>i的东西。 在 bash 中我可以使用以下 sed 命令来实现此目的: sed -i '1i some new text' myfile.md 所以我在 vim 中尝试了这个: :execute "!sed -i '1i" .getline('.') "' myfile.md" 这有效,但是当当前行中有 ! 时:shell returned 2。 然后我发现了 shellescape,并且我得到了以下命令来工作。现在看来我在转义字符上做了一些错误的事情,因为这会在字符串周围添加单引号。 :execute "!sed -i \"1i " . shellescape(getline('.'), 1) . "\" myfile.m 我错过了什么?有更好的办法吗? function! PrependLine() update " Save the current file to avoid problems with switching buffers yank " copy the current line to the default register edit myfile.md " Open a new buffer or switch to exiting one 1put! " Paste content of the default register before the 1st line update " Save the file edit # " Return to the previous file endfunction map <leader>i :call PrependLine()<CR> 唯一的问题是——文件名是固定的。 Vim 宏没有参数。功能确实有。

回答 1 投票 0

使用 sed 命令更新 pom.xml 文件中的版本

示例输入: 示例输入: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.in28minutes.microservices</groupId> <artifactId>currency-exchange-service</artifactId> <version>3.0.3</version> <name>currency-exchange-service-docker</name> <description>Demo project for Spring Boot</description> <properties> <java.version>16</java.version> <spring-cloud.version>2020.0.2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> </dependencies> </project> 预期输出: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.in28minutes.microservices</groupId> <artifactId>currency-exchange-service</artifactId> <version>3.0.4</version> <name>currency-exchange-service-docker</name> <description>Demo project for Spring Boot</description> <properties> <java.version>16</java.version> <spring-cloud.version>2020.0.2</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> </dependencies> </project> 我已经计算了 3.0.4 并使用 var2 变量来存储它。 我正在使用这个命令来更新 sed -i "s/<version>.*<\/version>/<version>$var2<\/version>/" pom.xml 但它正在改变每个版本标签下的版本。 但我需要更改以项目作为父标签的版本标签下的值。 我尝试过 sed -i "s/<project><version>.*<\/version>/<project><version>$var2<\/version>/" pom.xml 但它不起作用。 我的脚本.sh #!/bin/sh var1=$(echo '${project.version}' | mvn help:evaluate | grep -v '^[[]') var2=$(echo "$var1" | awk -F. -v OFS=. '++$NF') sed -i "s/<version>.*<\/version>/<version>$var2<\/version>/" pom.xml echo "$var2" $ xmlstarlet edit --update '//project/version' --value '3.0.4' file.xml <?xml version="1.0"?> <project> <version>3.0.4</version> <dependencies> <dependency> <version>1.2.5.RELEASE</version> </dependency> </dependencies> </project> 这个 sed 应该做: sed "/<version>/s/>.*</>${var2}</" pom.xml <project> <version>3.0.4</version> </project> 它搜索带有 <version> 的行,然后替换 >xxx< with the variable. 之间的数据 使用正则表达式,您可以确保要查找的内容不会太多。 sed -E "/<version>/s/>[^<]+</>${var2}</" pom.xml 如果您需要确保它不会更改除version之后的其他project,您可以使用awk awk -v var=$var2 '/<project>/ {f=1} f && /<version>/ {sub(/>[^<]+</,">"var"<")} 1' pom.xml <project> <version>3.0.4</version> </project> 测试 project 并在下一行更改的 Sed 版本 sed -E '/<project>/!b;n;s/<version>[^<]+</<version>'$var2'</' pom.xml <project> <version>3.0.4</version> </project> xmlstarlet edit -P --inplace --update '/_:project/_:version' --value '3.0.0' pom.xml _:前缀背后的原因是,每个设置了 xmlns 属性的 XML 元素在引用时都应以命名空间为前缀,在提供的 pom.xml 文件的情况下,设置了 xmlns 属性,但命名空间为未指定,这将使 xmlstarlet 回退到默认命名空间,即 _。

回答 3 投票 0

使用 sed 或 awk 映射自定义和任意函数

我尝试使用命令 sed 或 awk 以及定义的任意函数(或命令),例如作为 Bash 脚本。例如,以下 Bash 脚本 prepend_largest_prime.sh 接受

回答 1 投票 0

如何用制表符替换换行符?

我有如下所示的图案 你好 你好 你好 问候 问候语 不再向你问好 我正在尝试使用以下命令用制表符替换所有换行符 sed -e“s_/ _/ _G” 但这不是...

回答 7 投票 0

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