我想在冒号后分隔所有内容:前后两个单独的值。
Server Id: 9
Completed: 0
In Error: 0
Added To Queue: 0
Waiting: 0
In Progress: 0
Total Processed: 0
Processing Rate: 0
FinalStatus:0, GOOD
预期观点:
Server Id|9
Completed|0
...
我能够得到一行的最后一列:
grep -oP '(?<=:)\w+'
我想知道如何分离这些值。
答案 0 :(得分:2)
简单的awk命令会给你输出:
awk -F ":" '{sub(/^ +/, "", $2); print $1"|"$2}' file
但不得不说你的问题很模糊,而且不清楚这是否真的是你需要的。
答案 1 :(得分:1)
如果您只想用冒号字符替换冒号分隔符,那么这个单行Perl程序将按您的要求执行
perl -ne "print join '|', split /:\s*/" myfile
<强>输出强>
Server Id|9
Completed|0
In Error|0
Added To Queue|0
Waiting|0
In Progress|0
Total Processed|0
Processing Rate|0
FinalStatus|0, GOOD
答案 2 :(得分:1)
我想使用正则表达式
添加一个选项perl -ne '$_ =~ s/:\s?/|/; print $_' myfile
输出:
Server Id|9
Completed|0
In Error|0
Added To Queue|0
Waiting|0
In Progress|0
Total Processed|0
Processing Rate|0
FinalStatus|0, GOOD
答案 3 :(得分:1)
在GNU sed中,
sed 's/ *: */|/g' file
答案 4 :(得分:1)
如果任务真的如你所说的那么简单,那么这是一个非常简单的答案:
tr ":" "|" < file.txt
或perl
版本; - )
perl -pe 'tr{:}{|}' file.txt