sed 相关问题

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

如何使用shell命令将文本文件每一行中的“/”替换为空格? [已关闭]

我有一个文本文件(input.txt),其中的行包含“/”字符。我想将此文件的每一行中的每个“/”替换为空格。以下是内容示例: 7 47562385 47562385

回答 1 投票 0

如何在现有 CSV 文件的单个单元格中附加一些静态内容

假设我需要在包含客户详细信息的现有 CSV 文件的第一个单元格(不是逐行)中附加以下内容,我该如何实现, 待补充内容: &quo...

回答 2 投票 0

我有 70mb .tsv 文件,我想从每行删除“/”并使用 sed 或 tr 或任何基于 Linux 的命令添加空格而不是“/”[已关闭]

我想从每行中删除“/”并添加空格而不是“/” 输入示例: 7 47562385 47562385 ctttttttttttttttt/cttttttttttttttt 11 48932150 48932150 C/A 6 87733066 87733066

回答 2 投票 0

我想从每行中删除“/”并添加空格而不是“/”

我想从每行中删除“/”并添加空格而不是“/” 输入示例: 7 47562385 47562385 ctttttttttttttttt/cttttttttttttttt 11 48932150 48932150 C/A 6 87733066 87733066

回答 1 投票 0

如何在现有 csv 文件的单个单元格中附加一些静态内容

假设我需要在包含客户详细信息的现有 csv 文件的第一个单元格(不是逐行)中附加以下内容,我该如何实现它, 内容待补充...

回答 1 投票 0

使用 sed 删除两个数组中的差异(更新 ssh 密钥)

我的目标是自动更新authorized_keys 文件中的ssh 密钥。由于限制,我无法使用 ansible,这会简单得多。 脚步: 从文件中读取密钥

回答 1 投票 0

如何删除所有匹配的行以及每行后面的一行?

我有一个大文件和我的特定字符串的列表。输出不应包含我的特定行以及每一行之后的一行。例如, 具体线路: '格格' 'SS' 输入: '格格' ‘123’ ...

回答 1 投票 0

在package.json中使用sed替换斜杠时出现问题

我有一个 JSON 文件,数据中的文件路径不一致。 有些使用双反斜杠,有些则使用正斜杠。 我正在尝试标准化数据中的文件路径。 该命令适用于

回答 1 投票 0

PCRE 正则表达式到 SED

我正在尝试采用 PCRE 正则表达式并在 SED 中使用它,但我遇到了一些问题。请注意,这个问题代表了一个更大的问题(如何将 PCRE 正则表达式转换为与 SED 一起使用)...

回答 5 投票 0

如何排除 SED 范围中的最后一行

我的日志文件包含单个日志输出的多行,如下所示: 调试: 追踪: 调试: 我的日志文件包含多行单个日志输出,如下所示: DEBUG : <line1> <line2> TRACE : <line11> <line12> <line13> DEBUG : <line21> <line22> <line23> TRACE : <line31> <line32> ERROR : <line41> <line42> TRACE : <line51> <line52> DEBUG : <line61> <line62> 我必须从 TRACE 输出中清除它。 我用 sed -e "/^TRACE/,/^DEBUG\|^ERROR/d" <log.txt ...然后得到 DEBUG : <line1> <line2> <line22> <line23> <line42> <line62> Sed 删除包含范围,并且不在 TRACE 块之后打印 DEBUG 和 ERROR 行。 我用 sed 尝试了其他方法,但没有找到如何仅删除 TRACE 块。 Sed 非常好,但也许我应该使用另一个 Unix 实用程序...请建议。 这里有一种方法可以在 sed 中完成您想要的操作,尽管这是我通常使用 perl 的情况。这使用 sed 的“保留空间”来收集日志文件的每个部分,并在看到下一部分的开始时打印(或不打印)整个部分。 sed -n -e '/^\(TRACE\|DEBUG\|ERROR\)/ ! { H ; $!b } ; x ; /^\(DEBUG\|ERROR\)/ p' 但是,回答问题的主题,我认为不可能从范围中排除最后一行。 awk '/^TRACE/ { while ( $0 !~ /^DEBUG/ || $0 !~ /^ERROR/ ) { getline ; if ( $0 ~ /^DEBUG/ || $0 ~ /^ERROR/ ) { print $0 ; next } } } { print $0 }' FILENAME AWK 来救援;-)(注意:它可以粘贴到一行。) 这提供了一种将输入拆分到不同位置的合理技术。 使用案例会很好,但如果您坚持将字符串锚定在行的开头,我认为这是不可能的。 #!/bin/sh 执行3>&1 执行4> /dev/null 执行5>&1 同时读取 -r 行;做 回显 $line | grep ^DEBUG >&3 && 执行 >&3 && 继续 回显 $line | grep ^TRACE >&4 && 执行 >&4 && 继续 回显 $line | grep ^错误 >&5 && 执行 >&5 && 继续 回显$行 完毕 您可以复制标签,仅删除其中第一个: sed -E "s/^((DEBUG)|(ERROR)) : /\1 : \n\1 /" | \ sed "/^TRACE/,/^DEBUG\|^ERROR/d" | sed "s/^</\t</" DEBUG : DEBUG <line1> <line2> DEBUG <line21> <line22> <line23> ERROR <line41> <line42> DEBUG <line61> <line62> 最后一个 sed 命令只是为了更好的可读性,第一行留作练习。 :) 这是一个将 sed 的保留空间用作布尔值的解决方案:当且仅当保留空间为空时,才会输出当前行。 sed -e '/^TRACE/ h ; /^\(DEBUG\|ERROR\)/ { x ; s/.*// ; x } ; x ; /./ { x ; d } ; x' 其工作原理如下: 如果当前行与 ^TRACE 匹配,则将其放入保留空间,以便禁用输出(见下文)。 如果当前行与 ^\(DEBUG\|ERROR\) 匹配,则清除保留空间,以便启用输出(见下文)。 当且仅当保留空间包含某些内容时,x ; /./ { x ; d } ; x 才会删除当前模式空间。由于没有使用-n,如果模式空间没有被删除,就会输出。根据需要,保留空间被保留(对于块的其他行):正好执行 2 个 x (因为 d 开始一个新的循环)。 备注: 即使第一行与 ^\(TRACE\|DEBUG\|ERROR\) 不匹配,此解决方案也有效(仅删除 TRACE 块)。 图案空间或保持空间中不会累积线条。因此,该解决方案具有内存高效性,并且避免了 POSIX 允许的潜在限制:“模式和保存空间均应能够保存至少 8192 字节。” (具有大行的文本文件可能仍会受到限制的影响,但无论如何在这种情况下 sed 都无能为力。)

sed
回答 5 投票 0

如何向已包含一些标题的 CSV 文件添加标题

我的要求是将新标题添加到现有的 CSV 文件中,该文件的第一行已经有一些标题。我需要在现有标题的末尾添加新标题。的价值...

回答 3 投票 0

如何在现有的 csv 文件中添加新标题,该文件中已经有一些标题

我的要求是将新标题添加到现有的csv文件中,该文件的第一行已经有一些标题,我需要在现有标题的末尾添加新标题,th的值...

回答 1 投票 0

使用 /

我有一个文本文件,其日期格式如下:27/8/2019 我想删除除包含 27/8/2019 的行之外的所有行 如果我使用 sed,那就是: sed -i '/pattern/!d' file.txt 问题...

回答 2 投票 0

BASH:使用 echo | 为变量赋值sed |阅读

我试图通过管道从 echo 传递一个字符串到 sed 来读取,但有些东西不起作用: #!/bin/bash STR="alef|bet|gimel|daled" 回显$STR 回声 $STR | sed 's/\|/ /g' |读...

回答 1 投票 0

删除特定范围内的行之间包含图案的行

我想完全删除包含忽略前几行的模式的行。我试过: $ sed -i '2,$s/pattern/d' file.txt 但它说的是未终止的命令。 例如我有一个文件: 图案#

回答 2 投票 0

用于计算数据文件中数字列表的平均值的脚本

文件data.txt包含以下内容: 1.00 1.23 54.4 213.2 3.4 脚本的输出应该是: 平均值:54.646 首选一些简单的脚本。

回答 4 投票 0

SED --- 在字符串中,将 token 1 之后的 word1 替换为 word2 --- 仅替换一次

输入字符串:PARAM 一段不起作用的代码。 PARAM="0 " 0 - 退出" off 1 " 1 - RUN_INITIAL_TASK" off 2 " 2 - (N.I.U) 禁止参考跳跃服务" off 3 "...

回答 1 投票 0

SED --- 在字符串中,将 token 1 之后的 word1 替换为 word2 --- 仅替换盎司

输入字符串:PARAM 一段不起作用的代码。 PARAM="0 " 0 - 退出" off 1 " 1 - RUN_INITIAL_TASK" off 2 " 2 - (N.I.U) 禁止参考跳跃服务" off 3 "...

回答 1 投票 0

sed - 符合 Posix 的通用多个插入/附加单个命令

我想在一个可移植的 sed 命令中执行多次插入/追加。 在 GNU sed 中,我可以执行以下操作: sed -e '1i hi' -e '$a 再见' <(seq 1 10) I've the found the following wo...

回答 1 投票 0

PowerShell 中用 sed - i 替换的字段包含特殊字符

我需要使用Sed来更新Json文件中的一些字符串。但由于字段中存在特殊字符,导致替换没有成功: 该字符串应该重新...

回答 1 投票 0

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