awk不打印表格格式的输出值
以上awk在单行中打印所有值,并且需要在不同的行中打印输出。一行中的abc1 def1 ghi1 lmn1 opq1 rst1和另一行中的abc2 def2 ghi2 lmn2 opq2 rst2。每行的字数不固定(可以是3个字或多于3个字) input.txt:awk不打印表格格式的输出值,awk,Awk,以上awk在单行中打印所有值,并且需要在不同的行中打印输出。一行中的abc1 def1 ghi1 lmn1 opq1 rst1和另一行中的abc2 def2 ghi2 lmn2 opq2 rst2。每行的字数不固定(可以是3个字或多于3个字) input.txt: awk BEGIN{print "result1 result2 result3"} 'BEGIN{RS=","}{$1=$1}1' input.txt result1 result2 result3 abc1 def1
awk BEGIN{print "result1 result2 result3"} 'BEGIN{RS=","}{$1=$1}1' input.txt
result1 result2 result3
abc1 def1 ghi1 lmn1 opq1 rst1 abc2 def2 ghi2 lmn2 opq2 rst2
预期产出:
abc1
def1
ghi1 lmn1 opq1 rst1
abc2
def2
ghi2 lmn2 opq2 rst2
如果您的记录由多个空行中的一行分隔,您可以这样做
result1 result2 result3
abc1 def1 ghi1 lmn1 opq1 rst1
abc2 def2 ghi2 lmn2 opq2 rst2
编辑:因为OP更改了输入文件,所以也更改了此处的代码
$ awk -v RS= 'BEGIN {print "result1","result2","result3"}
{$1=$1}1' file | column -t
result1 result2 result3
abc1 def1 ghi1
abc2 def2 ghi2
输出如下
awk '
BEGIN{
print "result1","result2","result3"}
NF{
count++;val=val?val OFS $0:$0}
NF && count==3{
print val;
val=""}
END{
if(val){
print val}
}' OFS="\t" Input_file
以下内容也可能对您有所帮助
result1 result2 result3
abc1 def1 ghi1 lmn1 opq1 rst1
abc2 def2 ghi2 lmn2 opq2 rst2
echo“result1 result2 result3”;xargs-n3
$cat tst.awk
开始{RS=”“}
NR==1{
对于(i=1;i您将记录分隔符设置为逗号。文件中没有逗号!它每行打印3个字,字数不固定,应根据/t@spiderman,好的,看来你的样品现在不一样了,试着把样品放进去发帖时一次完成。请立即尝试我的编辑代码,让我知道这是否对您有帮助?它是否有效。在何处添加%s,以便将各个列的值与标题值对齐(result1 result2 result3)?@spiderman,我已添加了OFS=“\t”
在代码中,它应该仅用制表符分隔。对于使用%s
,我们应该使用printf
.OFS=“\t”没有帮助。可能是printfawk-f tst.awk file | column-t-->以单行打印所有内容不提供您发布的示例输入。请查看我发布的答案以查看它的输出。您的输入与您告诉我们的不同,或者您没有运行我发布的脚本。如果没有看到这两个,我无法帮助您调试它,抱歉。
echo "result1 result2 result3";xargs -n 3 < Input_file | column -t
$ cat tst.awk
BEGIN { RS="" }
NR==1 {
for (i=1; i<=NF; i++) {
printf "result%d%s", i, (i<NF ? OFS : ORS)
}
}
{
$1 = $1
print
}
$ awk -f tst.awk file | column -t
result1 result2 result3
abc1 def1 ghi1
abc2 def2 ghi2