将字符串分隔为变量

时间:2013-07-02 11:26:11

标签: perl shell scripting sed awk

我想在冒号后分隔所有内容:前后两个单独的值。

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+'

我想知道如何分离这些值。

5 个答案:

答案 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