我有一个包含
等数据的大文件cd24511 |cd25512|cd24541|cd11554 0| cd24512 |cd24542|cd24531 0| cd24513 |cd24543 0| cd27531 |cd27531|cd27541 2740| cd27521 |cd27541 2261|
我想用以下方式使用sed格式化它。
cd24511 |cd25512|cd24541|cd11554 0|
cd24512 |cd24542|cd24531 0|
cd24513 |cd24543 0|
cd27531 |cd27531|cd27541 2740|
cd27521 |cd27541 2261|
如果我使用sed搜索数字模式,则列出我所有的数字,如下所示
245112551224541115540245122454224531024513245430
答案 0 :(得分:0)
这是一种方法:
$ sed -r 's/\s+[0-9]+\s*\|/&\n/g' file | column -t
cd24511 |cd25512|cd24541|cd11554 0|
cd24512 |cd24542|cd24531 0|
cd24513 |cd24543 0|
cd27531 |cd27531|cd27541 2740|
cd27521 |cd27541 2261|
不确定你是否真的想要空行,但你可以这样做:
$ sed -r 's/\s+[0-9]+\s*\|/&\n/g' file | column -t | sed 's/$/\n/'
cd24511 |cd25512|cd24541|cd11554 0|
cd24512 |cd24542|cd24531 0|
cd24513 |cd24543 0|
cd27531 |cd27531|cd27541 2740|
cd27521 |cd27541 2261|
分解第一个sed
脚本:
s # substitution command
/ # start of regular expression match
\s+ # one or more whitespace characters
[0-9]+ # one or more digits
\s* # zero or more whitespace characters
\| # literal | character
/ # end of regular expression match, start of replacement
&\n # & contains the match, add the newline character
/ # end of replacement, start of flags
g # global flag
column -t
命令处理我们的表格布局,双倍间距用换行符$
替换每行\n
的结尾。
答案 1 :(得分:0)
这是awk
解决方案。
awk '{for (i=1;i<=NF;i++) if ($i~/^[0-9]+\|/) $i=$i"\n"}1' file | column -t
cd24511 |cd25512|cd24541|cd11554 0|
cd24512 |cd24542|cd24531 0|
cd24513 |cd24543 0|
cd27531 |cd27531|cd27541 2740|
cd27521 |cd27541 2261|
它测试所有字段,如果它只包含数字并且|
添加换行符。