向行添加新行字符

向行添加新行字符

我想提取第二个字段并将其转置为一行

cat > temp1
1   73
2   74
3   75

我的方法:

cut -f2 temp1 | tr '\n'  '\t' > temp2

结果 :

temp2
73  74  75  

可以理解的是,该行的右端有一个制表符分隔符,但缺少一个换行符。有没有一种简单的方法可以解决这个问题?

答案1

使用paste而不是tr

$ cut -f2 temp1 | paste -s
73  74  75

验证不可见的空白

$ cut -f2 temp1 | paste -s | od -c
0000000   7   3  \t   7   4  \t   7   5  \n
0000011

答案2

  cat file | cut -d' ' -f2 | xargs -n3
  73 74 75

并验证每个不可见的空白@格伦·杰克曼

cat file | cut -d' ' -f4 | xargs -n3 |  od -c

0000000   7   3       7   4       7   5  \n
0000011

答案3

打印/发出/给出新行的最简单方法是使用echo.

在创建的文件中添加新行似乎很简单:

剪切-f2 temp1 | tr '\n' '\t' > temp2 echo >> temp2

这可以在一行中完成:

{ cut -f2 temp1 | tr '\n'  '\t' ; echo ; } > temp2

也就是说:如果尾随制表符不是问题。如果是,您需要删除它或避免生成它,其中任何一个都可以做到这一点:

awk 'NR>1{printf( "%s\t",a)}{a=$2}END{print a}' temp1 >temp2

sed -n 's/[0-9]*[[:blank:]]*//;1{h;d};H;${g;y/\n/\t/;p}' temp1 >temp2

sed 's/[0-9]*[[:blank:]]*//' temp1 | paste -sd '\t' >temp2

相关内容