以下の例では正しい項目を選択しましたが、タイトルはなく、その逆も同様です。どのように両方を持つことができますか?
$ ps aux | grep 'gpart'
erwann 200603 0.0 0.0 2608 72 pts/3 S 12:57 0:00 /bin/sh /usr/sbin/gparted
root 200608 0.0 0.0 2608 1056 pts/3 S 12:57 0:00 /bin/sh /usr/sbin/gparted
root 200693 0.0 0.0 2608 68 pts/3 S 12:57 0:00 /bin/sh /usr/lib/udisks2/udisks2-inhibit /usr/sbin/gpartedbin
root 200700 1.9 0.2 264960 18620 pts/3 SLl 12:57 8:31 /usr/sbin/gpartedbin
root 202327 99.8 0.0 2520 64 pts/3 R 13:36 400:07 gpart -s 512 /dev/sdc
erwann 214723 0.0 0.0 9032 716 pts/4 S+ 20:17 0:00 grep --color=auto gpart
$ ps aux | tee >(head -n1) >(grep 'gpart') > /dev/null
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
ベストアンサー1
固定文字列を検索するには、gpart
multimatch バリアントを使用して、grep
最初の行自体だけでなく、一致する行を選択できます。
ps aux | grep -E '^USER|[g]part'
awk
または、最初の行とパターンに一致するすべての行を出力するソリューションを使用してください。
ps aux | awk 'NR==1 || /[g]part/'
どちらの場合も、最初の文字は角gpart
括弧で囲まれています。これはそれ自体grep
がブロックまたは一致するawk
ためです。 (正規表現では、単一の文字を含む角括弧は実際には機能せず、単に単一の文字自体を表します。)
はい(ps
質問に表示される出力に基づいています)
ps aux | grep -E '^USER|[g]part'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
erwann 200603 0.0 0.0 2608 72 pts/3 S 12:57 0:00 /bin/sh /usr/sbin/gparted
root 200608 0.0 0.0 2608 1056 pts/3 S 12:57 0:00 /bin/sh /usr/sbin/gparted
root 200693 0.0 0.0 2608 68 pts/3 S 12:57 0:00 /bin/sh /usr/lib/udisks2/udisks2-inhibit /usr/sbin/gpartedbin
root 200700 1.9 0.2 264960 18620 pts/3 SLl 12:57 8:31 /usr/sbin/gpartedbin
root 202327 99.8 0.0 2520 64 pts/3 R 13:36 400:07 gpart -s 512 /dev/sdc