首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多次裁剪并使用多个分隔符连接结果?

使用多次裁剪并使用多个分隔符连接结果?
EN

Stack Overflow用户
提问于 2015-03-17 21:45:11
回答 4查看 4K关注 0票数 0

如果我有档案:

代码语言:javascript
复制
c1 c2 c3 c4 c5 c6
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18 

我只希望第一、第二、第四和第五列排成一行,但用不同的分隔符分隔。

例如,第1行是: 1;2:4-5第2行是: 7;8:10-11第3行是: 13;14:16-17

我认为,使用相同的分隔符,命令应该如下所示:

代码语言:javascript
复制
paste --delimiter=':' <(cut -f1 file.txt) <(cut-f2 file.txt) <(cut -f4 file.txt) <(cut -f5 file.txt)

结果应该在数组中,这样每一行都是数组中的一个单独的条目。

代码语言:javascript
复制
IFS='\n'; echo "${array[*]}"

1;2:4-5
7;8:10-11
13;14:16-17

我想沃克也许能做到,但我想不出.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-17 21:56:48

若要使awk按您指定的方式打印每一行,请使用

代码语言:javascript
复制
awk '{ print $1 ";" $2 ":" $4 "-" $5 }' filename

或者,为了排除标题行,

代码语言:javascript
复制
awk 'NR > 1 { print $1 ";" $2 ":" $4 "-" $5 }' filename

若要将结果输入bash数组,请执行以下操作:

代码语言:javascript
复制
while IFS='\n' read line; do array+=("$line"); done < <(awk '{ print $1 ";" $2 ":" $4 "-" $5 }' filename)
票数 3
EN

Stack Overflow用户

发布于 2015-03-17 21:59:49

我想如果您有4个字段,就可以使用sed。

代码语言:javascript
复制
line="1 2 3 4 5 6
> 7 8 9 10 11 12
> 13 14 15 16 17 18 "
echo "$line" | cut -f1,2,4,5 -d " " | sed 's/\([^ ]*\) \([^ ]*\) \([^ ]*\) \(.*\)/\1\;\2\:\3\-\4/g '
票数 1
EN

Stack Overflow用户

发布于 2015-03-17 22:56:33

perl

代码语言:javascript
复制
perl -lanE 'printf "%s;%s:%s-%s\n",@F[0,1,3,4]' file

版画

代码语言:javascript
复制
c1;c2:c4-c5
1;2:4-5
7;8:10-11
13;14:16-17

跳头

代码语言:javascript
复制
perl -lanE 'printf "%s;%s:%s-%s\n",@F[0,1,3,4] if $.>1'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29110304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档