シェル - UNIX ではコマンド テキスト出力ファイルから空白または空のスペースを削除できない

okwaves2024-01-25  182

コマンド '(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

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。