Ksh
如何在 IBM AIX ksh 中加入兩個命令的結果
我想在下面執行腳本,但不使用 ksh 在 IBM AIX 上創建中間文件(lsfs.out、df.out)
lsfs_out=`lsfs | sed -n '1d;p' | sort -b -k 3` df_out=`df -k | sed -n '1d;p' | sort -b -k 7` echo "$lsfs_out" > lsfs.out echo "$df_out" > df.out join -1 7 -2 3 df.out lsfs.out
第一個命令的輸出如下:
lsfs | sed -n '1d;p' | sort -b -k 3 /dev/hd4 -- / jfs2 4194304 -- yes no /dev/hd11admin -- /admin jfs2 1048576 -- yes no
第二個命令的輸出是:
df -k | sed -n '1d;p' | sort -b -k 7 /dev/hd4 2097152 836284 61% 9360 5% / /dev/hd11admin 524288 523848 1% 7 1% /admin
我不明白如何用命令輸出替換“join”命令的文件名。
我正在嘗試的是無用的。例如:
join -1 7 -2 3 <(echo "$df_out") <(echo "$lsfs_out") ksh: 0403-057 Syntax error: `(' is not expected.
多一個
join -1 7 -2 3 <`echo "$df_out"` <`echo "$lsfs_out"` A file or path name is too long. < some output > Cannot find or open the file.
一個
awk
解決方案(當然可以單列)(df -k ; lsfs ) | awk 'FNR==1 {next; } NF==7 { L[$7]=$0 ; next ; } { printf "%s %s\n",$0,L[$3];}'
在哪裡
FNR==1 {next; }
過濾頭NF==7 { L[$7]=$0 ; next ; }
儲存在文件系統上索引的 df 行{ printf "%s %s\n",$0,L[$3];}
列印 lsfs 行並加入 df’s- 這假設沒有文件系統在路徑中有空格(也是原始問題)