コマンド '(sleep 4 ; echo q) | AIX 上で、topas -P |tee /tmp/top' を実行すると、コマンド テキスト ファイルにこの出力が生成されますが、そこから空白スペースを削除できません。文字を含む行のみを出力するために sed/perl および awk コマンドを試しましたが、何も役に立ちませんでした。 sed/per/grep または awk を使用して空行を削除するには、このファイルを ASCII テキスト形式に変換する必要がありますか?
$ file /tmp/top
/tmp/top: commands text
$ head -n33 /tmp/top
DATA TEXT PAGE PGFAULTS
USER PID PPID PRI NI RES RES SPACE TIME CPU% I/O OTH COMMAND
root 9044256 20447712 60 20 2.43M 304K 2.43M 0:00 2.1 0 253 topas
root 14942646 8913178 60 20 72.0M 37.8M 72.0M 0:42 0.2 0 1 TaniumCl
root 20447712 21889434 60 20 148K 312K 508K 0:00 0.2 0 0 ksh
root 21955056 20447712 60 20 216K 36.0K 216K 0:00 0.1 0 3 sed
root 24838602 20447712 60 20 120K 8.00K 120K 0:00 0.1 0 1 tee
root 9830690 10355194 60 20 120K 4.00K 120K 0:00 0.1 0 0 sleep
root 12255642 13893896 60 41 57.5M 39.8M 57.5M 33:42 0.1 0 0 mmfsd
root 10355194 20447712 60 20 148K 312K 508K 0:00 0.1 0 0 ksh
root 9109790 4063622 39 20 12.9M 3.68M 12.9M 5:19 0.1 0 0 rmcd
root 13697394 4063622 60 20 8.27M 55.9M 8.27M 17:18 0.1 0 0 backup_a
root 20906328 1 60 20 1.81M 0 1.81M 3:15 0.0 0 0 nfsd
root 4260244 1 60 20 620K 88.0K 620K 41:23 0.0 0 0 getty
root 1573172 0 37 41 960K 0 960K 15:17 0.0 0 0 gil
nagios 9240876 4063622 60 20 23.7M 736K 23.7M 9:43 0.0 0 0 ncpa_pas
root 4391332 1 60 20 12.5M 252K 12.5M 4:43 0.0 0 0 secldapc
a_RTHOMA 8323456 12059082 60 20 636K 3.06M 1016K 0:00 0.0 0 0 sshd
root 8388902 4063622 60 20 1.76M 1.05M 1.76M 7:03 0.0 0 0 clcomd
root 3539312 1 60 20 448K 0 448K 5:07 0.0 0 0 lock_rcv
root 3670388 1 60 20 448K 0 448K 4:18 0.0 0 0 sec_rcv
root 5767652 4063622 48 8 392K 324K 392K 2:49 0.0 0 0 xntpd
root 6816242 1 60 20 1.19M 0 1.19M 1:05 0.0 0 0 rpc.lock
root 459026 0 16 41 640K 0 640K 2:19 0.0 0 0 reaffin
root 23921008 1 60 20 1.00M 0 1.00M 4:36 0.0 0 0 n4cb
lpar2rrd 23200112 25625020 64 22 868K 120K 868K 0:00 0.0 0 0 vmstat
root 7143896 1 40 41 448K 0 448K 0:48 0.0 0 0 nfsWatch
root 6160840 1 60 20 448K 0 448K 0:09 0.0 0 0 j2gt
1
od -c を介して出力をパイプして、空白行が完全に空白かどうかを確認してみましたか?別のオプション最初の 7 行をスキップするには、tail -n +7 を使用するだけです (空白の数が一貫している場合)。すでに試した sed または awk はどれですか?
– キャリー J
2020 年 9 月 3 日 12:03
od -c は次のようになります。$ od -c /tmp/top 0000000 033 [ ? 1 時間 033 = 033 [3 9 ; 4 9 メートル 033 0000020 [ 4 0 メートル 033 [ ? 1 0 4 9 h 033 ( B 033 0000040 [ m 033 [ H 033 [ 2 J 033 [ 3 3 m To 0000060 pas モニター for 0000100 h o s t : 033 [3 7 m t e 0000120 s t s a c 2 p 033 [ 3 3 m I 0000140 n ter v a l : 033 [ 3 7 m tail -n +7 の方が良さそうです
– ロニー・トーマス
2020 年 9 月 3 日 12:08
@ChrisJ、tail -n +7 は機能するようです。テストして確認します。
– ロニー・トーマス
2020 年 9 月 3 日 12:23
2
@ronythomas、または awk '/^[a-zA-Z]+/'ファイル 1 ですか?
– ラベンダー・シン13
2020 年 9 月 3 日 12:28
------------------------
出力ファイルには ASCII 文字が含まれているようです。そのため、次のような文字で始まる行のみを出力することをお勧めします。
awk '/^[a-zA-Z]/' Input_file
0