我想从文件末尾删除一些n行.这可以用sed完成吗?
例如,要删除2到4行,我可以使用
$ sed '2,4d' file
Run Code Online (Sandbox Code Playgroud)
但我不知道行号.我可以删除最后一行使用
$sed $d file
Run Code Online (Sandbox Code Playgroud)
但我想知道从最后删除n行的方法.请告诉我如何使用sed或其他方法来做到这一点.
我有一个Visual Studio项目,它是在本地开发的.必须将代码文件部署到远程服务器.唯一的问题是URLsthey包含硬编码.
项目包含URL,例如?page = one.要使链接在服务器上有效,它必须是/ page/one.
我决定在部署之前用sed替换我的代码文件中的所有URL,但是我坚持使用斜杠.
我知道这不是一个漂亮的解决方案,但它很简单会省去很多时间.我必须替换的字符串总数小于10.必须检查的文件总数约为30.
描述我的情况的示例如下:
我正在使用的命令:
sed -f replace.txt < a.txt > b.txt
Run Code Online (Sandbox Code Playgroud)
replace.txt包含所有字符串:
s/?page=one&/pageone/g
s/?page=two&/pagetwo/g
s/?page=three&/pagethree/g
Run Code Online (Sandbox Code Playgroud)
A.TXT:
?page=one&
?page=two&
?page=three&
Run Code Online (Sandbox Code Playgroud)
运行sed命令后b.txt的内容:
pageone
pagetwo
pagethree
Run Code Online (Sandbox Code Playgroud)
我希望b.txt包含:
/page/one
/page/two
/page/three
Run Code Online (Sandbox Code Playgroud) 我想在OS X上使用sed编辑文件.我正在使用以下命令:
sed 's/oldword/newword/' file.txt
Run Code Online (Sandbox Code Playgroud)
输出发送到终端. file.txt未被修改.使用以下命令将更改保存到file2.txt:
sed 's/oldword/newword/' file1.txt > file2.txt
Run Code Online (Sandbox Code Playgroud)
但是我不想要另一个文件.我只想编辑file1.txt.我怎样才能做到这一点?
我试过-i标志.这会导致以下错误:
sed: 1: "file1.txt": invalid command code f
Run Code Online (Sandbox Code Playgroud) 我需要从日志文件中检索最后100行日志.我尝试了sed命令
sed -n -e '100,$p' logfilename
Run Code Online (Sandbox Code Playgroud)
请让我知道如何更改此命令以专门检索最后 100行.
不是如何在一行之前插入换行符.这是在询问如何在一行中的模式之前插入换行符.
例如,
sed 's/regex/&\n/g'
Run Code Online (Sandbox Code Playgroud)
将在正则表达式模式后插入换行符.
我怎么能在模式面前做同样的事情呢?
这是一个示例输入文件
some text (012)345-6789
Run Code Online (Sandbox Code Playgroud)
应该成为
some text
(012)345-6789
Run Code Online (Sandbox Code Playgroud) 也许不是一个很具体的问题,但我感到困惑之间的差异grep,awk并sed在他们的Unix/Linux系统管理和文本处理的作用方面.
我想获取最后两个数字(一个int,一个float;后跟可选的空格)并仅打印它们.
例:
foo bar <foo> bla 1 2 3.4
Run Code Online (Sandbox Code Playgroud)
应打印:
2 3.4
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下内容:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
Run Code Online (Sandbox Code Playgroud)
会给我的
foo bar <foo> bla 1 replacement
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将其替换为组1,则会打印整行.
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
Run Code Online (Sandbox Code Playgroud)
如何仅打印与组中的正则表达式匹配的行的部分?
有没有办法在Unix中删除文件中的重复行?
我可以使用sort -u和uniq命令,但我想使用sed或awk.那可能吗?
我有一个文本文件,其中一些单词打印在所有大写.我希望能够将文本文件中的所有内容转换为小写,使用sed.这意味着第一句话将会读到,'我有一个文本文件,其中一些单词都打印在所有大写字母中.'
使用awk或sed如何选择两种不同标记图案之间的线条?可能有多个标有这些图案的部分.
例如:假设文件包含:
abc
def1
ghi1
jkl1
mno
abc
def2
ghi2
jkl2
mno
pqr
stu
Run Code Online (Sandbox Code Playgroud)
并且起始模式是abc和结束模式是mno
So,我需要输出为:
def1
ghi1
jkl1
def2
ghi2
jkl2
Run Code Online (Sandbox Code Playgroud)
我使用sed匹配模式一次:
sed -e '1,/abc/d' -e '/mno/,$d' <FILE>
Run Code Online (Sandbox Code Playgroud)
有没有办法在sed或awk 反复做,直到文件的结尾?