我有一个如下所示的字符串
+ + +
| DNS NAME | IP |
+ + +
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
+ + +
我想格式化如下
+-------------+------------------+
| DNS NAME | IP |
+-------------+------------------+
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
+-------------+------------------+
所以我正在寻找bash
或使用工具(awk
/ sed
)命令,这样我就可以搜索字符串
+ + +
并将其替换为
+-------------+------------------+
请注意,固定字符串搜索的列宽可以更长或更短。
答案 0 :(得分:3)
sed '/^+/ s/ /-/g' file
+-------------+------------------+
| DNS NAME | IP |
+-------------+------------------+
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
+-------------+------------------+
答案 1 :(得分:1)
您还可以使用awk
解决方案:
$ awk '/^\+/{gsub(" ","-",$0);}1' file
+-------------+------------------+
| DNS NAME | IP |
+-------------+------------------+
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
| abcdefg.com | 1.2.3.4, 5.6.7.8 |
+-------------+------------------+
awk --version
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
Copyright (C) 1989, 1991-2015 Free Software Foundation.
在你用+所有空格开头的行中替换 - 然后打印结果。