繁体   English   中英

AWK命令将列显示为行

[英]AWK command to display columns as rows

./pkg_FC.mwlib

TILE_FC:1
TILE_FC:2
TILE_FC:3
TILE_FC:4

我可以使用awk命令带来此结果。 但是我需要输出

./pkg_FC.mwlib TILE_FC:1 TILE_FC:2 TILE_FC:3 TILE_FC:4

如何实现此输出。 还有如何将此输出写入文件。 我正在使用以下脚本,使用foreach来获得以上输出。

foreach libname ( `find . -name "*mwlib"` )
echo $libname
ls -l $libname/FRAM | awk '{print $9}'
end

提前致谢

您使用了错误的工具并违反了Shell编程的2条基本规则:

  1. 切勿for file in $(command)写入for file in $(command) ,并且
  2. 永远不要解析ls的输出。

用于查找文件的UNIX命令名为find 在其手册页中查找-printf-exec ,并在手册页中查找xargsstat

如果必须循环从某些命令输出的文件名,则语法应与此或类似:

command | while IFS= read -r file; do
    ...
done

对于换位,您可以执行以下操作:

$ printf "TILE_FC:%d\n" {1..4} | awk 'ORS=(NR%4?" ":RS)'
TILE_FC:1 TILE_FC:2 TILE_FC:3 TILE_FC:4

$ printf "TILE_FC:%d\n" {1..6} | awk 'ORS=(NR%4?" ":RS)'
TILE_FC:1 TILE_FC:2 TILE_FC:3 TILE_FC:4
TILE_FC:5 TILE_FC:6

$ printf "TILE_FC:%d\n" {1..8} | awk 'ORS=(NR%4?" ":RS)'
TILE_FC:1 TILE_FC:2 TILE_FC:3 TILE_FC:4
TILE_FC:5 TILE_FC:6 TILE_FC:7 TILE_FC:8

更改4NR%4 ,如果你想的宽度是不同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM