Questions tagged «sed»

sed是用于过滤和转换文本的命令行流编辑器。

6
如何删除短于XY的行?
我发现了一个有关如何删除行数超过2048个字符的问题: 如果长度超过XY,如何删除行? 问:但是如何删除少于4个字符的行?因此,删除文件中长度为1或2或3的行。 更新:感谢您提供许多好的答案,但我只能将其中一个标记为“好”


3
使用sed为solaris上的命令的输出着色
我有一个必须在linux和solaris上都可以使用的ksh脚本。我正在尝试为特定命令的输出着色。它可以在Linux(特别是RHEL6)上运行,但不能在solaris(SunOS 5.10)上运行。 在Linux上的命令(输出“测试”正确地显示为红色): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test 关于so​​laris的命令(输出“ test”未着色): [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m 有没有办法制作此命令,使输出为红色,而输出中没有原始代码?我不能更改'echo'命令,因为这只是我实际运行的命令的填充。

6
如何在每个换行符前添加回车符?
我有一个仅用于\n换行的文件,但我需要\r\n每个换行都有它。我怎样才能做到这一点? 例如,我在Vim中使用来解决了这个问题:%s/\n/\r\n/g,但是我想使用脚本或命令行应用程序。有什么建议么? 我尝试使用sed或进行查找grep,但是我立即对转义序列变通方法感到困惑(这些命令对我有点绿色)。 如果有兴趣,该申请涉及到我的问题/答案在这里
28 sed  grep  newlines 

3
sed -i'1d'是做什么的?
我了解这sed是操作文本文件的命令。 从我的Google搜索中,似乎-i意味着要对文件本身执行操作,这是正确的吗? 那'1d'呢
28 sed 

4
如何“ grep”给定范围内的线长?
注意:此问题是此问答的补充:如何在给定范围内“ grep”表示行长*不是*? 我只需要从长度范围小于或等于3个字符,但不大于或等于10的文本文件(单词列表,用换行符分隔)中获取行。 例: 输入: egyezményét megkíván ki alma kevesen meghatározó 输出: megkíván alma kevesen 问题:我该怎么做bash?
28 bash  sed  grep  perl 


5
使用sed(或awk)删除图案上方的行范围
我有以下代码,该代码将删除带有模式的banana行及其后的两行: sed '/banana/I,+2 d' file 到目前为止,一切都很好!但我需要它来除去2行之前 banana,但我不能用“减号”或任何(类似于得到它grep -v -B2 banana file应该做的,但没有): teresaejunior@localhost ~ > LC_ALL=C sed '-2,/banana/I d' file sed: invalid option -- '2' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,-2 d' file sed: -e expression #1, char 16: unexpected `,' teresaejunior@localhost ~ > LC_ALL=C sed '/banana/I,2- d' file sed: -e …


11
是否必须有更好的方法来仅替换单个换行符?
我习惯每句只写一行,因为我通常将内容编译为LaTex,或者以其他格式书写而忽略了换行符。我使用空白行指示新段落的开始。 现在,我有一个以这种风格编写的文件,我想将其作为纯文本发送。我想删除所有单个换行符,但完整保留两个换行符。这是我所做的: sed 's/$^/NEWLINE/' file.txt | awk '{printf "%s ",$0}' | sed 's/NEWLINE/\n\n/g' > linebreakfile.txt 这用一些我相信不会出现在文件中的文本替换空行:NEWLINE然后用awk消除了所有换行符(我在某些网站上发现了这个技巧),然后NEWLINE用必需的两个换行符替换了s 。 这似乎是完成一件非常简单的事情的漫长方法。有没有更简单的方法?另外,如果有一种方法可以用单个空格替换多个空格(有时由于某种原因有时会蔓延),那也很好。 我使用emacs,所以如果有一些emacs特定的技巧很好,但我宁愿看到一个纯sed或纯awk版本。

7
如何在包括它们的两个模式之间选择首次出现
如何在包括它们的两个模式之间选择首次出现。最好使用sed或awk。 我有: text something P1 something content1 content2 something P2 something text something P1 something content3 content4 something P2 something text 我想第一次出现P1和P2之间的线(包括P1线和P2线): something P1 something content1 content2 something P2 something

1
如何用sed代替左括号?
我必须(用文件中的某些字符替换掉,但是我做不到。\(用于对sed进行分组,当我\\(与sed一起使用时,它将其视为\(字符而不是just (。在我看来,这是一个棘手的案例。
27 sed 

3
sed捕获组不起作用
我有一个格式为的字符串[0-9]+\.[0-9]+\.[0-9]。我需要分别提取第一个,第二个和第三个数字。据我了解,捕获组应该能够做到这一点。我应该可以sed "s/\([0-9]*\)/\1/g用来取得第一个号码,sed "s/\([0-9]*\)/\2/g获取第二个数字以及sed "s/\([0-9]*\)/\3/g获取第三个数字。但是,在每种情况下,我都会得到整个字符串。为什么会这样呢?
27 sed 

8
如何grep-inverse-match和排除“前”和“后”行
考虑一个包含以下条目的文本文件: aaa bbb ccc ddd eee fff ggg hhh iii 给定一个模式(例如fff),我想grep上面的文件以获取输出: all_lines except (pattern_matching_lines U (B lines_before) U (A lines_after)) 例如,如果B = 2和A = 1,则模式=的输出fff应为: aaa bbb ccc hhh iii 如何使用grep或其他命令行工具执行此操作? 请注意,当我尝试: grep -v 'fff' -A1 -B2 file.txt 我没有得到我想要的。我得到: aaa bbb ccc ddd eee fff -- -- fff ggg hhh …

9
想要只用sed代替首次出现
原始文件 claudio antonio claudio michele 我只想将“ claudio”的第一次出现更改为“ claudia”,因此文件结果 claudia antonio claudio michele 我试过了 sed -e '1,/claudio/s/claudio/claudia/' nomi 但是执行全局替换。为什么?
26 sed 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.