假设文件包含以下内容: good
good bad
next of baaaad
good 我想使用sed删除包含"bad“的行和这些行中的下一行。在上面的例子中,我想删除第2行和第3行。 我怎么才能做到这一点呢? 我试过了,但不起作用: ebra@him:/tmp$ cat iio | sed -e "s/\n.*bad.*\n.*//"
good
good bad
next of baaaad
good
我正在使用sed过滤一个文件列表。我有一个经过排序的文件夹列表,我想要获取特定文件夹之后的所有行。为了完成这项任务,我使用描述的解决方案,它对我尝试的任何输入都很有效,但当匹配在第一行时就不起作用了。在这种情况下,sed将删除输入的所有行
下面是一个例子:
$ ls -1 /
bin
boot
...
sys
tmp
usr
var
vmlinuz
$ ls -1 / | sed '1,/tmp/d'
usr
var
vmlinuz
$ ls -1 / | sed '1,/^bin$/d'
# sed will delete all lines from t
我需要多次删除包含某个字符串的文件中的所有行,例如,如果我的文件如下所示:
This is a test toRemove first line
This is a test toRemove second line toRemove
应该生成一个类似于只有第一行的文件
This is a test toRemove first line
我正在尝试从命令行在linux上执行此操作,并尝试使用grep或sed,如下所示
grep -d "toRemove.*toRemove" myFile > myOtherFile
sed '/\toRemove.*toRe
我想对sed运行一个inplace命令,以便只保留文件中的某些行。这与通常使用带有替换命令的sed -i就地替换文件行的用法不同。例如,假设我有这样的文件:
> cat file.txt
fox
rabbit
fox
fox
wolf
我只想保持与fox匹配的行数。我的想法是:
sed -inr '/fox/p' file.txt
但这并不像预期的那样有效。我遗漏了什么?
使用linux,我希望搜索字符串Blah的文本文件,然后返回包含字符串的行完整行和模式后面的所有行,直到包含单词Failed的一行为止。
例如,
Test Case Name "Blah"
Error 1
Error 2
Error 3
Failed
Test Case Name "Foo"
Pass
Test Case Name "Red"
Pass
在上面,我想搜索"Blah",然后返回:
Test Case Name "Blah"
Error 1
Error 2
Error 3
一直到线Failed。Blah
我有一个由几行文本组成的文件:
The first line
The second line
The third line
The fourth line
我有一个字符串,它是其中的一行:The second line
我想删除文件中的字符串和它后面的所有行,这样除了字符串之外,它还会删除The third line和The fourth line。该文件将变为:
The first line
我在谷歌上搜索了一个解决方案,似乎我应该使用sed。类似于:
sed 'linenum,$d' file
但是如何找到字符串的行号呢?或者,我还应该怎么做呢?
我正在尝试使用sed删除文件中的行,但我不想删除这些行,除非搜索字符串完全匹配。即。
#!/bin/bash
set -x
file="list1"
index=0
while read line ;
do
if [ ! "$line" == "@@@" ];
then
MYARRAY[$index]="$line"
#index=$(($index+1))
let index++
else
break
fi
done <
我试图弄清楚每个字在使用linux的文件中发生了多少次。
通过使用下面的代码,我已经将文件中的每个单词放到了一个新行中。
sed -i 's/ /\n/g' books2
我现在正试图用空格替换单词的开头和结尾,因为有些单词包含标点符号。我目前正在使用下面的代码来完成这个任务,但是它似乎不起作用。一旦我有了这个命令,我将能够运行一个命令,它将对所有单词进行计数,并返回所有单词的计数列表。有人能纠正我如何删除标点符号吗?
sed -i 's/\([^[:alpha:]]\)$//' books2 #this is my attempt to remove the
我想阅读基于时间戳的数据。检查输入文件的第一行,如果它与$timestamp匹配,则删除超过获得的最大时间戳的行。我使用了下面的命令,但在sed命令中抛出了错误,这是我为删除$timestamp之前获得的行而编写的。我哪里错了?
timestamp=`(exec mysql db -u xxx -pxxx -s -N -e "select max(time) from table;")`
sed -e '1/"$timestamp"/d' /home/xx/xx
我试图使用sed删除与特定模式和后续所有行匹配的行,直到找到另一个模式。
例如:
This is a line I want to delete,
this is second line that should be deleted.
And this is stop-pattern which should terminate deletion.
我想删除给sed两种模式/delete,/ (这是应该删除的起始模式和包含该模式的整行)和/(这是决定停止删除的点的模式)的整个段落。
如何编写能够完成这一任务的sed命令?
我的档案是
0::question#1::
Love
giberrish fdfd
1::anything#2:
Is
repeat
22::anything#3::
Lie
我想要提取
Love
giberish
****
Is
repeat
****
Lie
cat file.txt | sed 's/::\n([^\n]*)/\1/g'
我得到的文件是
0::question#1::
Love
1::anything#2:
Is
22::anything#3::
Lie
关于测试正则表达式匹配在这里,https://regex101.com/
UPDATE我没有
我想从txt文件的每一行中删除逗号,除了最后一行之外,我使用了grep -Po '.*(?=,$)和sed -e 's/.$//',但这将删除最后一行,因为它不包含逗号(这是我的理解)。举个例子:
1,
2,
3
using the commands above , the result will be:
1
2
而不是:
1
2
3
我希望使用下面的regex行从我的网站删除恶意代码;
find -type f -name \*.php -exec sed -i 's/.*eval(base64_decode(\"CmVycm.*/<?php/g' {} \;
这将保留我想要的<?php,但我注意到许多注入都在整个php文件的多行上,这意味着不仅仅是第一个<?php,所以是否可以做一个if do are语句,如果它在php文件的第1行,保留php标记,否则删除整个行,如果它在其他地方?
如何删除在包含--- (任何行号中的第一次出现)的行之后在任何行号中以# Match开头的任何行?
编辑:
#Match与以---开头的行之间的关系是,后者可以在#Match之前或之后存在,但只有在#Match之后存在时才应该删除它。-
样本输入
hello
this is sample
--- sdafasdf
adsafasf
asfas
fasf
#Match
this is sample
adsafasf
asfas dafasf
------ lots of fun
---- test
adsfasf****
预期产出
hello
this is sample
---
我试图插入一行文字,即;
include /etc/nginx/sites-enabled/*;
在下一行后的单词;
for more information.
在我的/etc/nginx/nginx.conf中使用以下命令
sudo sed '/for more information.'/a include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf
但每次我运行它,它就会返回
>
我对这类事情不太在行,所以我希望有人能帮我。
干杯,