相关疑难解决方法(0)

sed:查找两行以上的模式,而不是在该模式之后替换

哇,这个真的有我.我想在这里需要一些棘手的sed技能.这是我试图替换的命令文本的输出值:

...
fast
     n : abstaining from food
Run Code Online (Sandbox Code Playgroud)

我想要替换它的价值是:

...
Noun
 : abstaining from food
Run Code Online (Sandbox Code Playgroud)

事实证明这是我认为的诡计.因为'fast'被列出了很多次,因为它列在行的开头的其他地方.所以我想出了这个来定义范围:

sed '/fast/,/^     n : / s/fast/Noun/'
Run Code Online (Sandbox Code Playgroud)

我认为会这样做,但是......不幸的是,这并没有结束替换,这场比赛后的其余输出被Noun取代.比赛结束后如何让sed停止更换?更好的是,我可以找到两行模式匹配并替换它吗?

linux sed

3
推荐指数
1
解决办法
7459
查看次数

match and replace multiple newlines with a SED or PERL one-liner

I have an input C file (myfile.c) that looks like this :

void func_foo();
void func_bar();

//supercrazytag
Run Code Online (Sandbox Code Playgroud)

I want to use a shell command to insert new function prototypes, such that the output becomes:

void func_foo();
void func_bar();
void func_new();

//supercrazytag
Run Code Online (Sandbox Code Playgroud)

So far I've been unsuccessful using SED or PERL. What didn't work:

sed 's|\n\n//supercrazytag|void func_new();\n\n//supercrazytag|g' < myfile.c
sed 's|(\n\n//supercrazytag)|void func_new();\1|g' < myfile.c
Run Code Online (Sandbox Code Playgroud)

Using the same patterns with perl -pe "....." didn't work either.

What am I missing ? I've …

perl replace newline sed multiline

3
推荐指数
1
解决办法
3882
查看次数

sed帮助:匹配并替换文字“ \ n”(不是换行符)

我有一个包含多个\ n实例的文件。

我想用实际的换行符替换它们,但是sed无法识别\ n

我试过了

sed -r -e 's/\n/\n/'
sed -r -e 's/\\n/\n/'
sed -r -e 's/[\n]/\n/'
Run Code Online (Sandbox Code Playgroud)

以及其他多种转义方式。

sed是否能够识别文字\ n?如果是这样,怎么办?

是否有另一个程序可以读取将\ n解释为真实换行符的文件?

linux bash newline sed pattern-matching

3
推荐指数
1
解决办法
4751
查看次数

如何使用`tr`用逗号替换换行符?

我看到了这一点:如何使用sed替换换行符(\ n)?,并认为我会尝试用tr替换换行符',

该文件如下所示:

something
newline
newline again
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

something',
newline',
newline again',
Run Code Online (Sandbox Code Playgroud)

所以,我尝试了这些:

tr "\n" "'," < myfileabove tr "\n" "\'," < myfileabove

他们俩都没有我想要的...。我做错什么了吗?

sed tr

3
推荐指数
1
解决办法
3936
查看次数

将 16 行合并为一行

文件包含表示十六进制值的 ASCII 字符。(每行以“,”结尾)

cat temp.txt
    0x6A, 
    0xF2, 
    0x44,
    .....
    0xF8, 
    0x1A,
Run Code Online (Sandbox Code Playgroud)

我尝试将每 16 个单词/行组合成这样的一行

cat hex_result.txt 
0x6A, 0xF2, 0x44, 0xF8, 0x45, 0x41, 0x88, 0xD1,0x4E, 0x8B, 0xA3, 0xB1, 0x8C, 0xE0, 0x37, 0x2D, 
.... 
0xE2, 0x1C, 0x06, 0x8A, 0x75, 0x2B, 0xBC, 0x3C, 0xC5, 0x08, 0xB7, 0x4E, 0xB0, 0xE4, 0xF8, 0x1A,
Run Code Online (Sandbox Code Playgroud)

是否有任何 bash 命令来完成它?

bash

3
推荐指数
1
解决办法
769
查看次数

GNU sed - 查找或替换空格或新行.为什么这不起作用?v3.02 vs v4.2

C:\crp\cnp>sed -V

GNU sed version 3.02

Copyright (C) 1998 Free Software Foundation, Inc.......


C:\crp\cnp>type f.f

a a a

a a a
Run Code Online (Sandbox Code Playgroud)

试图用空格替换'a'.

C:\crp\cnp>type f.f | sed -e s/a/\d032/g

d032 d032 d032

d032 d032 d032
Run Code Online (Sandbox Code Playgroud)

为什么不工作?

我不介意我是在寻找还是替换空格或换行......我只是希望能够指定它们.它似乎没有工作,我不知道为什么.

(用f替换空格或空格不起作用)

C:\crp\cnp>echo a a | sed s/\d32/f/
a a
Run Code Online (Sandbox Code Playgroud)

注意 - 似乎它可能在4.2中工作,但我对3.02'cos感兴趣,这是与unxutils捆绑在一起的版本http://unxutils.sourceforge.net/

更新问题 - 感谢paxdiablo的提示......关于gnu32win,我现在正在使用它而不是unxutils.它更新了.我现在可以指定空格.和鬼狗的小费,以及paxdiablo,我看到双引号.我很好用\ d(因为使用4.2)或空格指定空格.但是,我仍然无法删除新行

C:\ crp>输入ff | sed -e"s /\r \n/f/g"

aa

b bb

c cc

C:\ crp>输入ff | sed -e"s /\d013\d010/f/g"

aa

b bb

c cc

C:\ crp>输入ff | sed …

windows command-line gnu sed command-prompt

2
推荐指数
1
解决办法
8607
查看次数

如何使用awk将两个模式之间的未知数量的多行合并为一行

我有一些文本文件,其中每个文件将有如下信息

235.91 245.67 B: some information here
246.79 246.99 A: some other information here,
more information here,
and may be here
247.45 248.99 A: some other text here,
some more here
249.98 ---- 
Run Code Online (Sandbox Code Playgroud)

并且模式重复

我希望文本安排如下:

235.91 245.67 B: some information here
246.79 246.99 A: some other information here, more information here, and may be here
247.45 248.99 A: some other text here. some more here
249.98 -----
Run Code Online (Sandbox Code Playgroud)

这意味着我想合并两个匹配模式之间的所有行(它们之间有空格)

我希望每一行都以数字作为模式开始.数字始终有一个小数点,小数点后有两位数.图案与下一个图案之间的线数不同(可以有一条或多条线或根本没有线).

有人可以使用shell脚本帮助我这样做,最好使用awk吗?

shell awk grep

2
推荐指数
1
解决办法
1490
查看次数

如何使用sed或awk在单行中排列单词?

我的文件内容:

Google
Facebook
yahoo
cisco
juniper
oracle
firetide
attack
Run Code Online (Sandbox Code Playgroud)

我想将上面的单词(列)转换成一行,如下所示:

Google Facebook yahoo cisco juniper oracle firetide attack
Run Code Online (Sandbox Code Playgroud)

注意:每个单词之间应该有一个空格.

请建议我使用sed或awk实现此目的的方法.

提前致谢.

awk sed

2
推荐指数
1
解决办法
117
查看次数

使用sed进行数据转换

我有一个像这样的文件:

A
B
C
D

E
F
G
H

I
J
K
L
Run Code Online (Sandbox Code Playgroud)

我希望它能像它一样出现

A,B,C,D
E,F,G,H
Run Code Online (Sandbox Code Playgroud)

我假设我会使用sed,但实际上我甚至不确定这是否是最好的工具.我愿意使用Linux系统上常用的任何东西.

perl,我这样做了......它有效,但它很脏,有一个尾随的逗号.希望更简单的事情:

$ perl -ne 'if (/^(\w)\R/) {print "$1,";} else {print "\n";}' test
A,B,C,D,
E,F,G,H,
I,J,K,L,    
Run Code Online (Sandbox Code Playgroud)

perl awk sed

2
推荐指数
1
解决办法
85
查看次数

使用sed合并行并添加逗号

我找到了几个相关的问题,但它们都不符合我的要求,因为我是一个真正的初学者,我无法弄明白.

我有一个包含这样的条目的文本文件,用空行分隔:

example entry &with/ special characters
next line (any characters)

next %*entry
more words
Run Code Online (Sandbox Code Playgroud)

我想输出合并行,在逗号之间插入逗号,并删除空行.即,示例应如下所示:

example entry &with/ special characters, next line (any characters)
next %*entry, more words
Run Code Online (Sandbox Code Playgroud)

我更喜欢sed,因为我知道它有点,但我也对linux命令行上的任何其他解决方案感到高兴.

bash sed

1
推荐指数
1
解决办法
126
查看次数

如何将行格式化为列,连接每一行,直到使用AWK遇到空行

如果sample.txt有以下数据

Employee_id 101
Dept_id 10
Salary 2000

Employee_id 102
Dept_id 20
Salary 3000

Employee_id 103
Dept_id 30
Salary 3000
Run Code Online (Sandbox Code Playgroud)

我想看到输出如下

Employee_id 101 Dept_id 10 Salary 2000
Employee_id 102 Dept_id 20 Salary 3000
Employee_id 103 Dept_id 30 Salary 3000
Run Code Online (Sandbox Code Playgroud)

linux shell awk

0
推荐指数
1
解决办法
70
查看次数

用于读取文件和用|替换新文件的shell脚本 符号

我有如下文件的txt文件.

abc
def
ghi

123
456
789
Run Code Online (Sandbox Code Playgroud)

预期产量是

abc|def|ghi
123|456|789
Run Code Online (Sandbox Code Playgroud)

我想用管道符号(|)替换新行.我想在egrep.After空行后使用它应该开始其他新行.

bash shell awk solaris sed

-1
推荐指数
1
解决办法
147
查看次数