我需要解析代码中的数字:
p1 <- c(1, 2, 100, 23, 0.12, 0.03, 0)
p2 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p30 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p300 <- c(100, 200, 1, 23, 2, 1, 0)
more variables starts with p...
other codes...
结果是这样的:
1 2 100 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 2 1 0
其中每一行代表一个变量数组。
我尝试了sed
和awk
,但没有解决问题。有没有人有这个想法?谢谢!
答案 0 :(得分:2)
kent$ awk -F'[()]' '{gsub(/, */," ",$2)}$0=$2' file
1 2 100 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 2 1 0
答案 1 :(得分:2)
使用GNU sed(for -r和EREs):
$ cat file
p1 <- c(1, 2, 100, 23, 0.12, 0.03, 0)
p2 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p30 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p300 <- c(100, 200, 1, 23, 2, 1, 0)
$ sed -r 's/.*\(|[,)]//g' file
1 2 100 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 2 1 0
答案 2 :(得分:1)
awk
和tr
表示可读性; - )
awk -F'[()]' '{print $2}' file | tr -d ','
答案 3 :(得分:0)
假设你在文件t.txt中有它:
$ grep ^p t.txt|sed 's/.*[(]//; s/[)].*//; s/,//g'
1 2 100 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 2 1 0
答案 4 :(得分:0)
您可以在bash
中执行此操作而无需调用外部程序。一个bash
单行:
#!/usr/bin/bash
while read v; do v=${v#*(}; v=${v%)*}; echo ${v//, / }; done<<XXX
p1 <- c(1, 2, 100, 23, 0.12, 0.03, 0)
p2 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p30 <- c(100, 200, 1, 23, 0.12, 0.03, 0)
p300 <- c(100, 200, 1, 23, 2, 1, 0)
XXX
输出:
1 2 100 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 0.12 0.03 0
100 200 1 23 2 1 0