如何将 header 添加到每条记录的行
How to add header to row for each record
我有一个大文件,列之间用“;”分隔
我已将其转置为行,但我需要将 headers 添加到行中。
例子
输入文件
31561;49215;10;1196825801480000
31561;49215;12;1196825801480000
31561;48665;14;1196825806980000
我使用此代码将列转置为行。
sed '$'!'G' file | tr ';' '\n'
我得到的输出是:
31561
49215
10
1196825801480000
31561
49215
12
1196825801480000
31561
48665
14
1196825806980000
但我想添加 headers 并得到如下内容:
Status1
Information1
Line : 31561
Point : 49215
Code: : 10
TB : 1196825801480000
Status1
Information1
Line : 31561
Point : 49215
Code: : 12
TB : 1196825801480000
Status1
Information1
Line : 31561
Point : 48665
Code: : 14
TB : 1196825806980000
请帮忙解决这个问题。谢谢
我这样修改代码:
awk -F';' '{
print "Status1"
print "Information1"
print "Line :" ;
print "Point :" ;
print "Code :" ;
print "TB :" "\n";
}' file
有效:)
使用awk
的解决方案:
awk -F';' '{
if ( NR != 1 ) printf "\n";
print "Status1\nInformation1";
print "Line: " ;
print "Point: " ;
print "Code: " ;
print "TB:", ;
}' file
要使用就地编辑:
awk -i inplace -F';' ...
...
...
使用 awk
$ awk -F";" 'BEGIN{ split("Line;Point;Code;TB",array)} {print "Status1" ORS "Information 1"; for(i=1; i<=NF; i++) print array[i]" : "$i; printf ORS}' file
Status1
Information 1
Line : 31561
Point : 49215
Code : 10
TB : 1196825801480000
Status1
Information 1
Line : 31561
Point : 49215
Code : 12
TB : 1196825801480000
Status1
Information 1
Line : 31561
Point : 48665
Code : 14
TB : 1196825806980000
split("Line;Point;Code;TB",array)
:拆分函数将字符串拆分为array
。如果您有更多列,那么您可以在拆分语句本身中提及这些列,for 循环将负责以您想要的格式打印输出。
要在新文件中重定向输出,请说 output_file
$ awk -F";" 'BEGIN{ split("Line;Point;Code;TB",array)} {print "Status1" ORS "Information 1"; for(i=1; i<=NF; i++) print array[i]" : "$i; printf ORS}' file> output_file
我有一个大文件,列之间用“;”分隔
我已将其转置为行,但我需要将 headers 添加到行中。
例子
输入文件
31561;49215;10;1196825801480000
31561;49215;12;1196825801480000
31561;48665;14;1196825806980000
我使用此代码将列转置为行。
sed '$'!'G' file | tr ';' '\n'
我得到的输出是:
31561
49215
10
1196825801480000
31561
49215
12
1196825801480000
31561
48665
14
1196825806980000
但我想添加 headers 并得到如下内容:
Status1
Information1
Line : 31561
Point : 49215
Code: : 10
TB : 1196825801480000
Status1
Information1
Line : 31561
Point : 49215
Code: : 12
TB : 1196825801480000
Status1
Information1
Line : 31561
Point : 48665
Code: : 14
TB : 1196825806980000
请帮忙解决这个问题。谢谢
我这样修改代码:
awk -F';' '{
print "Status1"
print "Information1"
print "Line :" ;
print "Point :" ;
print "Code :" ;
print "TB :" "\n";
}' file
有效:)
使用awk
的解决方案:
awk -F';' '{
if ( NR != 1 ) printf "\n";
print "Status1\nInformation1";
print "Line: " ;
print "Point: " ;
print "Code: " ;
print "TB:", ;
}' file
要使用就地编辑:
awk -i inplace -F';' ...
...
...
使用 awk
$ awk -F";" 'BEGIN{ split("Line;Point;Code;TB",array)} {print "Status1" ORS "Information 1"; for(i=1; i<=NF; i++) print array[i]" : "$i; printf ORS}' file
Status1
Information 1
Line : 31561
Point : 49215
Code : 10
TB : 1196825801480000
Status1
Information 1
Line : 31561
Point : 49215
Code : 12
TB : 1196825801480000
Status1
Information 1
Line : 31561
Point : 48665
Code : 14
TB : 1196825806980000
split("Line;Point;Code;TB",array)
:拆分函数将字符串拆分为array
。如果您有更多列,那么您可以在拆分语句本身中提及这些列,for 循环将负责以您想要的格式打印输出。
要在新文件中重定向输出,请说 output_file
$ awk -F";" 'BEGIN{ split("Line;Point;Code;TB",array)} {print "Status1" ORS "Information 1"; for(i=1; i<=NF; i++) print array[i]" : "$i; printf ORS}' file> output_file