sed - sed 命令交换一行中的元素
问题描述
我正在尝试交换 apache dir.conf 文件中的一些元素,如下所示:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
我想交换,index.html
因为index.php
这是所需的输出:
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
这是我到目前为止的命令,但我确信有一种更简洁的方法来编写它:
sed -e '2s/\(.*\)\s\(.*\)\s\(.*\)\s\(.*\)\s\(.*\)\s\(.*\)\s\(.*\)\s\(.*\)/\1 \2 \6 \3 \4 \5 \7 \8/'
顺便说一句,我留下了“2s ...”,因为我只想修改文件的第二行。
解决方案
Perl 来救援!
perl -pe 's/index\.(?:(php)|(html))/$1 ? "index.html" : "index.php"/ge if 2 == $.'
使操作符/e
的替换部分像代码一样,所以要测试其真实性,如果是真的,那么有,所以我们用 替换它,否则,有,所以我们用 替换它。s///
$1
php
html
html
php
推荐阅读
- python - LSTM:ValueError:层顺序的输入0与层不兼容:预期ndim = 3,发现ndim = 2。收到的完整形状:(无,1)
- php - 如何将 Woocommerce 的订单状态添加到时间表视图中的 Woocommerce Bookings wc-bookings-schedule-booking-info?
- mysql - AWS Kubernetes 集群 - WordPress 建立数据库连接时出错
- python - DJANGO 关系查询
- c - 如何处理哈希图中缺少的键
- javascript - 相交数组生成宽度和左侧
- android - Android OutOfMemoryException 在加载 200kb gif 但重新分配 14mb
- java - Web服务中的Java在达到阈值时间后返回响应并在此之后继续执行
- python - 等效于 Python 中的 Matlab 的 trisurf 以可视化凸包结果
- go - 构建 Go 项目:go mod 下载与 go build