awk 截取指定多个域为一行

回复 收藏
awk

用awk指定分隔符把文本分为若干段。如何把相同段的内容弄到一行?

以/etc/passwd为例,该文件以":"作为分隔符,分为了7段。

for i in `seq 1 7`

do

    awk -F ':' -v a=$i '{printf $a " "}' /etc/passwd

    echo 

done

2010-03-23 13:09 举报
已邀请:
0

zaishuiyixia

赞同来自:

好脚本,不过我感觉一般的有20个域就差不多了。
下面我用该脚本组合的/etc/passwd文件
#!/bin/bash
for i in `seq 1 20` ; do
        awk -F ':' -v a=$i '{printf $a " "}' /etc/passwd >>/home/test/1.txt
        echo " " >>/home/test/1.txt
done
0

渐行渐远

赞同来自:

域?是windows里面的域吗?
0

北辰星

赞同来自:

不指定分隔符的话不是默认为 “ ” 吗
0

繁星逐月

赞同来自:

赞一个。
0

菜鸟学运维 - 生活不努力,你就会被淘汰!

赞同来自:

根本看不懂!!!i_f31.gif

0

huluxiong

赞同来自:

续1楼的解释 比如文本:

root:/root:/bin/bash

bin:/bin:/sbin/nologin

daemon:/sbin:/sbin/nologin

输出结果:

root bin daemon

/root /bin  /sbin

/bin/bash /sbin/nologin /sbin/nologin

针对这次的“域” 是指  awk中 $0 ~$N 是按照 -F 分割后的各个段(楼主说的“域”)

把每行的,从$1开始 依次到 $N  输入到一个新文件 

PS:目前没遇到使用场景 , 知道的告诉我下

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: