Unix Shell命令用于删除空格和逗号之间的每个单词

时间:2016-11-03 11:29:02

标签: shell unix awk sed

我有一个字符串变量

columns = "name string,age int,address string,dob timestamp"

我想删除数据类型。即我想删除空格和逗号之后的单词。输出应为

name,age,address,dob

1 个答案:

答案 0 :(得分:2)


假设bash shell和extglob shell选项可用 - 请参阅pattern matching manual

$ columns='name string,age int,address string,dob timestamp'
$ echo "${columns// +([^,])/}"
name,age,address,dob


使用sed

$ echo "$columns" | sed 's/ [^,]*//g'
name,age,address,dob


使用awk来处理以,

分隔的字段
$ echo "$columns" | awk -F, -v OFS="," '{for(i=1; i<=NF; i++){split($i,n," "); $i=n[1]}} 1' 
name,age,address,dob

如果所有列都包含两个以空格分隔的单词,则可以使用空格或逗号作为分隔符并过滤掉不需要的字段

$ echo "$columns" | awk -F' |,' -v OFS=',' '{print $1,$3,$5,$7}' 
name,age,address,dob