标签: sed

如何用sed用模式替换文件中的行?

我正在阅读大量有关 sed 的文档,但仍然对我的特定用例感到困惑。

我想用我自己的行替换 conf 文件中的这一行:

替换这一行:

#maxmemory <字节>
和:
最大内存 26GB

这是我尝试过的:

sed s/maxmemory.*bytes.*/maxmemory 26gb//etc/redis/redis.conf

我收到错误:

sed: -e 表达式 #1, char 30: 未终止的 `s' 命令

这让我很难过,因为我不知道这意味着什么。所以我的问题是:

我怎样才能完成我想要的?这个错误是什么意思?(所以我可以从中学习)

linux bash regex sed command-line

33
推荐指数
2
解决办法
13万
查看次数

有效删除超大文本文件的最后两行

我有一个非常大的文件(~400 GB),我需要从中删除最后两行。我尝试使用sed,但在我放弃之前它运行了几个小时。有没有一种快速的方法可以做到这一点,还是我坚持sed

linux sed text-manipulation

31
推荐指数
4
解决办法
3万
查看次数

仅列出所有可用网络接口的设备名称

我想获取 Linux 服务器上所有可用网络设备名称的列表。我想

ifconfig
Run Code Online (Sandbox Code Playgroud)

可以完成这项工作,但是 ifconfig 会产生相当多的输出:

eth0      Link encap:Ethernet  Hardware Adresse 08:00:27:fc:5c:98  
          inet Adresse:192.168.2.222  Bcast:192.168.2.255  Maske:255.255.255.0
          inet6-Adresse: fe80::a00:27ff:fefc:5c98/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:41496 (40.5 KiB)  TX bytes:32503 (31.7 KiB)

eth1      Link encap:Ethernet  Hardware Adresse 08:00:27:e9:35:7d  
          [...]

eth2      Link encap:Ethernet  Hardware Adresse 08:00:27:ff:db:fe  
          [...]

lo        Link encap:Lokale Schleife  
          [...]
Run Code Online (Sandbox Code Playgroud)

我想要实现的是一个列表

eth0
eth1
eth2
lo
Run Code Online (Sandbox Code Playgroud)

甚至更好

eth0
eth1
eth2
Run Code Online (Sandbox Code Playgroud)

我认为这可以通过“cat”、“sed”和“grep”的组合来完成,但我根本不知道如何去除不必要的信息。

networking linux grep sed cat

25
推荐指数
5
解决办法
7万
查看次数

如何使用解析 ps 输出的单个命令获取正在运行的进程的 pid?

我正在寻找一行返回正在运行的进程的 pid 的行。

目前我有:

ps -A -o pid,cmd|grep xxx|head -n 1

这将返回拳头pid, command。我只需要输出中的第一个数字,而忽略其余部分。我想sedawk会在这里提供帮助,但我对他们的经验有限。

另外,这还有一个问题,如果 xxx 没有运行,它会返回 grep 的 pid。

有一行真的很重要,因为我想重用输出来做其他事情,比如杀死那个进程。

bash awk sed pid

22
推荐指数
4
解决办法
7万
查看次数

替换文本文件每一行中第 n 次出现的字符串

我有带有空格分隔字符串 (2-5) 的大文本文件。字符串可以包含“'”或“-”。我想用管道代替第二个空格。

最好的方法是什么?

使用 sed 我在想这个:

sed -r 's/(^[a-z'-]+ [a-z'-]+\b) /\1|/' filename.txt
Run Code Online (Sandbox Code Playgroud)

任何其他/更好/更简单的想法?

linux awk sed command-line

19
推荐指数
1
解决办法
4万
查看次数

sed 中的`-n` 选项有什么作用?

这是以下内容的手册页条目-n

-n

抑制模式空间的自动打印

我注意到,当使用-n对某些操作,每行被打印到标准输出(和所请求的线被印刷两次):

$ cat test.txt 
first
second
third
fourth
fifth

$ sed -n '2,3p' test.txt 
second
third

$ sed '2,3p' test.txt 
first
second
second
third
third
fourth
fifth
Run Code Online (Sandbox Code Playgroud)

但是,该定律不适用于其他命令:

$ sed -n 's/t/T/' test.txt 

$ sed 's/t/T/' test.txt 
firsT
second
Third
fourTh
fifTh
Run Code Online (Sandbox Code Playgroud)

那么究竟有什么作用-n呢?

linux text-editing bash sed command-line

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

在两个双引号之间使用 sed 获取子字符串

我有一个文件

xyz... rsync: "/home/path/to/file": Permission denied (13) rsync:
"/home/path/to/file1": Permission denied (13) rsync:
"/home/path/to/file2": Permission denied (13) rsync:
"/home/path/to/file3": Permission denied (13)
Run Code Online (Sandbox Code Playgroud)

现在我只想提取文件路径并将其存储到另一个文件中。输出文件是这样的:

/home/path/to/file 
/home/path/to/file1 
/home/path/to/file2
/home/path/to/file3
Run Code Online (Sandbox Code Playgroud)

使用 sed 或 awk 我该怎么做?

我试过了,sed -n '/"/,/"/p' myfile但它不工作。

sed

17
推荐指数
2
解决办法
5万
查看次数

编辑大文本文件的第一行

我有一个巨大的文本文件,它太大了,无法将整个文件分页到内存中。我需要对这个文本文件做的就是编辑第一行(它是一个 CSV 文件,我需要更改标题)。

有没有一种简单的方法可以在 bash 中做到这一点?

linux bash grep sed textfiles

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

如何使用 sed 删除 U+200B(零宽度空间)

我有一个非常大的文件,其中散布着零宽度空间。打开和编辑使用时间太长,vi所以我想使用sed. 问题是,我不知道如何匹配字符!我试过使用\u200B, \x{200b}。有任何想法吗?

如果有帮助的话,我正在运行 CentOS 5。

regex unicode sed

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

如何打印文件的最后一个字符

在 Unix 中,使用像 sed 这样的简单命令,有没有办法打印文件的最后一个字符?

unix sed

16
推荐指数
3
解决办法
2万
查看次数