这是我的档案
Dummy lines
#### topo ########
Image version is v1
path is url/v1
Use the image v1 for deploying
##################
some more dummy lines
我需要将v1替换为v2,只在####、topo、########和##################之间使用,而不是在虚拟行和更多的虚拟行中。预期产出-
Dummy lines
#### topo ########
Image version is v2
path is url/v2
Use the ima
awk似乎匹配匹配表达式的所有模式,并执行相应的操作。是否存在可以关联的优先级?
例如。在下面的代码中,两个模式都匹配以#(注释)开头的行,并且两个操作都会执行。我希望注释行只匹配第一个操作。
/^#.*/ {
// Action for lines starting with '#'
}
{
// Action for other lines
}
我一直试图使用sed来完成以下工作。假设我有以下文件(注意:我的实际文件比这个文件更复杂):
hello world
foo bar
people people
target
something
done
我想检查target是否存在于两种模式之间,在本例中,foo bar和done (这两行都包括在内)行之间,如果target确实存在,则删除整个模式。
我知道如何使用以下sed命令删除这两种模式之间的行:
sed '/people.*/,/done/d' file
但是,如果字符串target存在于两个字符串匹配中,我只想删除它。
我的逻辑是这样的:
sed -n '
假设我有一个文件:
Line 1
Line 2
Start Line 3
Line 4
Line 5
Line 6
End Line 7
Line 8
Line 9
Start Line 10
Line 11
End Line 12
Line 13
Start line 14
Line 15
只有在找到了sed和/End/时,我才想使用/End/在模式之间进行打印。
如果您知道两个标记都在那里,并按照预期的顺序运行,sed -n '/Start/,/End/p'就可以正常工作,但是如果End出现故障或不存在,它只会从Start打印到文件的末尾。(即在示例中打印第14行和第1
我正在尝试使用sed命令从文本文件中查找并打印两个行数可变的块,如下所示:
...
INFO first block to match
id: "value"
...
last line of the first block
INFO next irrelevant block
id: "different value"
...
INFO second block to match
id: "value"
...
last line of the second block
...
我只知道id值和每个块都以一行"INFO“开头的事实。我希
我正在尝试编写一个bash脚本,它将读取.txt文件中的一系列ip地址,并使用NSE ()脚本对每个ip执行nmap扫描。在这个输出中,我只想打印特定的线条,但前提是其中一条与特定的模式匹配。
我尝试了多个不同的选项,但无法让它按我的意愿工作,因为我想检查和输出的两个项目在两个不同的行中。我最接近的是编写了下面的bash脚本:
#!/bin/bash
for server in $(cat servers-smb.txt); do
nmap --script smb-os-discovery $server | grep "report\|OS: Windows"
done
在
我一直在尝试,但在捕捉两个词之间的一个词和获取两个下划线之间的消息以及其他许多方面都没有成功.
我想在"##“之前找到换行符,这个”##“是在'##巴巴‘之后,但不是在后面,中间有一些文本。它们是文件中的许多"##",总是前面有\n。参见下面的模式:
期望输出
##
## baba {could also be "foo" or "bar"}
rosa rosa rosam rosae ipsum
{append or replace the '\n' before '\n##' with -
我知道sed使用以下命令从test.txt打印单词FOO和BAR之间的行
sed -n '/FOO/,/BAR/p' test.txt
但是,如何让sed仅在其中一行具有匹配模式时才打印FOO和BAR之间的行呢
例如,文件text.txt包含以下行:
Error- Undefined port
line1
line2
Undefined port in ALU1
line3
Error- Undefined port
line4
line5
Undefined port in LSU
line6
Error- Undefined port
line7
line8
U
好的,花了两天之后,我解决不了这个问题,我现在快没时间了。这可能是个很傻的问题,所以请耐心地听我说。我的awk脚本做了这样的事情:
BEGIN{ n=50; i=n; }
FNR==NR {
# Read file-1, which has just 1 column
ids[$1]=int(i++/n);
next
}
{
# Read file-2 which has 4 columns
# Do something
这是的一个扩展名,在这里,我了解了如何使用awk输出文件名和文件中由start和end regex匹配的部分。
所以如果我有一个包含内容的文件fileThree.txt
XXX >>
xxx one
xxx two
xxx three
<<
ZZZ >>
zzz one
zzz two
zzz three
<<
然后这个命令:
awk '/XXX/,/<</{print a[FILENAME]?$0:FILENAME RS $0;a[FILENAME]++}' *.txt
会输出
/d/Temp/temp
假设有一个类似以下内容的文本文件:
Case 4
case 4.1
a 3
a 5
a 7
a 1
a 9
a 4
endcase 4.1
//
.
.
. Do things that dont get parsed
.
.
//
case 4.2
a 1
b 3
a 6
b7
endcase 4.2
endcase 4
//
.
.
.
. More things
.
.
//
case 5
.
.
.
.
endcase 5
它包含多个变量在不同时间点的值。例如,情况4涉及变量a和b。我如何仅提取情况4.1和结束情况4.1之间的行?
发布
我需要在文件中的两个模式之间选择所有的模式,但是使用变量和*作为通配符。
例如(类似的事情)。
myscript var1 var2 var3
脚本。
#!/bin/bash
cat $1 | sed -n "/*$2*$3/,/## end of string ##/p"
它没有像我预期的那样工作,因为*并不像anything那样工作。*应该是变量之间的任意变量。例如,文件示例($1)就是这样的。
## First line, first variable is var2, and second variable is var3. Information text.
S
我想要grep一个特定的单词'foo‘在特定的文件中,然后得到我的匹配周围的N行,并且只显示包含第二个grep的块。
我发现了这个,但实际上不管用.
find . | grep -E '.*?\.(c|asm|mac|inc)$' | \
xargs grep --color -C3 -rie 'foo' | \
xargs -n1 --delimiter='--' | grep --color -l 'bar'
例如,我有文件'a':
a
b
c
d
bar
f
foo
g
h
i
j
bar
l
档案b
我有两个输出文件:
文件-A包含70,000+唯一条目。
文件-B包含一个独特的列表,我需要从文件-B中删除。
档案-A:
TOM
JACK
AILEY
BORG
ROSE
ELI
文件-B内容:
TOM
ELI
我想从文件A中删除文件-B中列出的任何内容。
文件-C(结果文件):
JACK
AILEY
BORG
ROSE
我想我需要一个while r for i语句。有人能帮我吗?我需要cat和读取文件-A和文件中的每一行-B,我需要从文件-A中删除它。
我应该使用什么命令?
有了下面的文本文件,我需要提取并打印两个模式之间的字符串,还需要包括第一个模式上的行和第二个模式后的行
asdgs sdagasdg sdagdsag
asdfgsdagg gsfagsaf
asdfsdaf dsafsdfdsfas
asdfdasfadf
nnnn nnnnn aaaaa
line before first pattern
***** FIRST *****
dddd ffff cccc
wwww rrrrrrrr xxxx
***** SECOND *****
line after second pattern
asdfgsdagg gsfagsaf
asdfsdaf