./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
提前致谢
答案 0 :(得分:1)
您使用了错误的工具并违反了shell编程的两个基本规则:
for file in $(command)
和ls
。查找文件的UNIX命令名为find
。在其手册页中查找-printf
和-exec
,并查找xargs
和stat
的手册页。
如果必须循环从某个命令输出的文件名,则语法是这样或类似的:
command | while IFS= read -r file; do
...
done
答案 1 :(得分:0)
对于换位,你可以这样做:
$ 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
如果您希望宽度不同,请更改4
中的NR%4
。