使用sed在搜索关键字后向文本添加新行很容易:
for i in 1 2 3 4 5; do echo "line $i"; done |\
sed '/line 3/a after three'
line 1
line 2
line 3
after three
line 4
line 5
我习惯于用分号链接搜索/替换命令s,比如
sed 's/alpha/foo/;s/beta/bar/'
但这不适用于追加命令a
for i in 1 2 3 4 5; do echo "line $i"; done |\
sed
输入文件: multiple_sed.txt
perl is an interpreterated language
it has three data types
scalar
array
hashes
scalar is a single value
我尝试了以下命令:
sed -e 's/array/scalar/g;s/was/is/g' multiple_sed.txt
输出:
perl is an interpreterated language
it has three data types
scalar
scalar
hashes
scala
在传递参数的函数中有一个sed表达式。
insert_after_new_line() {
if ! grep -q "${2}" "${3}"; then
sed -i "/${1}/{N;N;a ${2}}" "${3}"
fi
}
insert_after_new_line search insert textfile.txt
我正在尝试在搜索字符串下面插入一个空行,然后插入插入字符串。
所以
text
text
search
text
变成了
text
text
search
inser
我有一个字符串!Rails.env.dev? || params['render_javascript']。我想用render_javascript替换这个字符串。如果我一个文件一个文件地做,会有很多工作要做。我尝试使用unix命令,如下所示,但没有成功。
for i in $(find . -name "*.rb")
do
sed 's/!Rails\.env\.dev\? \|\| params\['render_javascript'\]/render_javascript/g' $i > x
我已经在Unix环境中创建了一个脚本。在脚本中,我使用sed命令从文件中删除了一些行,如下所示。我想从由行号指定的文件中删除一组指定的行,不一定是一个简单的范围。
sed -i "101d; 102d; ... 4930d;" <file_name>
当我执行此命令时,它显示以下错误:
sed: Arg is too long
你能帮我解决这个问题吗?
我试图使用sed在文件中的每一行末尾插入sed命令,使用-
sed -r 's/$/ | sed -r s\/abc\/xyz\/ /' filename.extension
接下来我想要的是在内部sed周围有单引号。所以它看起来就像-
sed -r 's/$/ | sed -r 's\/abc\/xyz\/' /' filename.extension
我试着转义里面的单引号,但没有用。
基本上,我想要下面的台词-
line 1 line 2 line 3
变成-
line 1 | sed -r 's/abc/xyz/'
我使用来构建我的网站,其中包含多个语言部分。我经常太专注于文本,以至于忘记了翻译文件头。
title: "This is the title"
date: 2020-03-01
shorttext: "Here come the shorttext in for the blog cards"
...
现在的问题是,当我使用grep成为标题/短文本的条目,并通过转换外壳命令将其通过管道传输时,如何将转换外壳的输出保存在标题/短文本的双引号中?
egrep 'shorttext:' $file | sed 's/shorttext: //g
我有10个文件,其中包含一个柱状垂直数据,我将其转换为将一个文件与水平形式的数据合并。
文件1 :
A
B
C
B
文件2 :
P
W
R
S
文件3 :
E
U
C
S
类似于上面所述,他们将重读文件。
--我使用以下脚本合并了所有文件
cd /path/
#storing all file names to array_list to club data of all into one file
array_list=`( awk -F'/' '{print $2}' )`
for i in {array_list[@]}
do
sed
在作业作业中,我试图编写一个sed脚本,去掉以单词Today开头的行
我使用vim创建了一个.sed文件(q1.sed是它的名称),这是我在脚本中使用的命令:
$ sed -n '/^Today/ d' filename
我的老师说他将使用一个示例.txt文件来使用这个命令,这就是他让我们尝试从目录中运行脚本的方法:
$ sed -f q1.sed samplefile.txt
当它生成输出时,仍然会显示包含“今天”的行。我做错了什么?(这是我从目录中的命令中做的还是没有做的事情,还是我从vim中输入的命令?)
我正在使用,我已经用新闻提供者更新了openid-en.js,现在,在这个项目的readme.txt之后,我应该用genere-sprite.sh刷新sprite映像。
但是,当我试图在OSX终端上运行generate-sprite.sh时,下面的错误将显示在输出上:
./generate-sprite.sh: ./remcomments.sed: /bin/sed: bad interpreter: No such file or directory
./generate-sprite.sh: ./remcomments.sed: /bin/sed: bad interpreter: No
我写了这个剧本:
xrandr | grep '*' | sed 's/\S*\(*+\)\S*//g'| sed 's/ //g' | sed 's/x.*//'
我如何组合这三个sed命令:
sed 's/\S*\(*+\)\S*//g'
sed 's/ //g'
sed 's/x.*//'
变成一个命令?
我必须对一个文件执行以下sed命令,以删除该文件中的一些行。如何使用文件名作为变量使其成为shell scipt?或者有没有什么简单的方法可以像shell脚本一样完成这项工作?
sed -i '/^Total/d' delhi222517.txt
sed -i '/^CBSE/d' delhi222517.txt
sed -i '/^Keyword wise/d' delhi222517.txt
sed -i '/^wise/d' delhi222517.txt
sed -i '/^Select A/d' d
我试图从不想要的行中清除大量日志文件,并且只保留那些包含一些字符串的日志文件。例如:
sunday morning NOPE again
may it be DENSE in such a place
nothing here really
在这种情况下,只留下包含无或密集的线条。
我试过从示例中使用sed,但是没有为字符串列表添加一个或一个列表,例如:
sed -ni.bak '/\NOPE/p' file
我是shell脚本的新手,但是我遇到了这个错误,并且不知道是怎么回事。
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/local/Do ...": extra characters at the end of d command
sed: 1: "/Users/loca