相关疑难解决方法(0)

为什么awk中的"1"打印当前行?

这个答案中,

awk '$2=="no"{$3="N/A"}1' file
Run Code Online (Sandbox Code Playgroud)

被接受了.请注意1AWK脚本的末尾.在评论中,答案的作者说

[1]是显示当前行的神秘方式.

我很困惑.这是如何运作的?

awk

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

Sed追加正则表达式捕获组

如果有人可以提供帮助,我正在尝试使用正则表达式和捕获组进行sed追加,但操作不完全:

echo "#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/" | sed -re '/#baseurl=http:\/\/mirror.centos.org(.*)/a baseurl=https:\/\/10.10.10.10\ \1'
 #baseurl=http://mirror.centos.org/centos//contrib//
 baseurl=https://10.10.10.10 1
Run Code Online (Sandbox Code Playgroud)

目前,它只是给文字值1而不是捕获组。

它应该给出:

 #baseurl=http://mirror.centos.org/centos//contrib//
 baseurl=https://10.10.10.10/centos//contrib//
Run Code Online (Sandbox Code Playgroud)

我也尝试过反斜杠括号,但它不起作用。请协助...。因为它现在伤了我的头...

regex bash sed capture-group

5
推荐指数
1
解决办法
780
查看次数

找到与sed匹配后如何追加一行?

我想在php文件中'maildomain'的行后追加port.我真的想要使用这个解决方案,因为这似乎是最干净,非常清楚,所以我做了

sed -i "350,/port/a \'maildomain\'" file.php
Run Code Online (Sandbox Code Playgroud)

但它出来是这样的:

351 : 'maildomain'
352 : 
353 : 'maildomain'
354 : 
...
358 : blablabla port blabla
359 : 'maildomain'
Run Code Online (Sandbox Code Playgroud)

如您所见,它'maildomain'从第350行交替添加,直到找到port它最初位于第354行.如何修改上面的sed命令只是添加'maildomain'之后port而不是之前添加?谢谢.

另外,当使用353而不是350时,它给了我:

353 : 'maildomain'
354 : balsdbflasdbflsd port blablablabla
355 : 'maildomain'
Run Code Online (Sandbox Code Playgroud)

为什么?谢谢〜

regex linux bash sed

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

标签 统计

bash ×2

regex ×2

sed ×2

awk ×1

capture-group ×1

linux ×1