在记录中每10个字符打印一次

时间:2015-06-01 18:16:57

标签: linux bash

这是我的档案

inavgmcn,inavg7ey    evl33001897,evl308971,evs3300142,evh8890123
inavgmcn,inavg7ey,pwdelf46,krpuram1,kundur12    evl3301897,evl3308971,evs3300142,evh8890123
pwdelf46,krpuram1,kundur12  evl3308971,evs3300142,evh8890123

我试图将每个记录中的两个字段分开并打印以将每8个章程剪切成新的行,我的命令我只获得了一半的部分,任何人都可以帮助解决这个问题。

MY Command

awk ' BEGIN {printf ("%-10s\t%-10s\n","USERS", "HOSTNAMES" )}; { printf ("%-.8s\t%-7s\n", $1,$2) }' filename

USERS           HOSTNAMES  
inavgmcn        evl33001897,evl3308971,evs3300142,evh8890123

期待输出

USERS                   HOSTNAMES  
inavgmcn                evl3301897
inavg7ey                evl3308971
                        evs3300142
                        evh8890123

inavgmcn                evl3301897
inavg7ey                evl3308971
pwdelf46                evs3300142
krpuram1                evh8890123
kundur12        

pwdelf46                evl3308971
krpuram1                evs3300142
kundur12                evh8890123

这是输出我试图首先在每8个字符的字段中进行字段剪切并保持到下一个新行,因为相同的第2个字段剪切了10个字符并保留字符到下一个新行..请如果我的问题不可理解,请告诉我......

2 个答案:

答案 0 :(得分:1)

您的问题不是很清楚,但根据示例输出,下面的脚本可能会有所帮助。

paste <(awk '{print $1}' filename|tr ',' '\n') <(awk '{print $2}' filename|tr ',' '\n')

上面的脚本可能不会提供您期望的文本格式,但我希望这是您正在寻找的内容。

答案 1 :(得分:1)

根据您分享的输出。这是我可以建议的最好的解决方案。

(echo -e "\nUSERS\n";    awk '{printf $1",\n"}' filename | tr ',' '\n') > file1
(echo -e "\nHOSTNAMES\n";awk '{printf $2",\n"}' filename | tr ',' '\n') > file2

临时文件file1&amp; file2已创建。 file1存储所有用户,file2存储所有主机名。 下面的命令给出了你想要的格式。

diff -y file1 file2|tr -d ["|><"]

捕获所需数据后,您可以删除不需要的文件。