cat出力から最初の行と最後の行を読み取る方法は?

cat出力から最初の行と最後の行を読み取る方法は?

テキストファイルがあります。アクション - ファイルから最初の行と最後の行を取得する

$ cat file | grep -E "1|2|3|4" | commandtoprint

$ cat file
1
2
3
4
5

cat出力なしで必要です(1と5のみ)。

~$ cat file | tee >(head -n 1) >(wc -l)
1
2
3
4
5
5
1

たぶんawkとより短い解決策が存在するかもしれません...

ベストアンサー1

sed解決策:

sed -e 1b -e '$!d' file

で読むとき、stdin次のような場合(例ps -ef:):

ps -ef | sed -e 1b -e '$!d'
UID        PID  PPID  C STIME TTY          TIME CMD
root      1931  1837  0 20:05 pts/0    00:00:00 sed -e 1b -e $!d

頭と尾解決策:

(head -n1 && tail -n1) <file

データがコマンド(ps -ef)から来る場合:

ps -ef 2>&1 | (head -n1 && tail -n1)
UID        PID  PPID  C STIME TTY          TIME CMD
root      2068  1837  0 20:13 pts/0    00:00:00 -bash

アッ解決策:

awk 'NR==1; END{print}' file

パイプラインの例もありますps -ef

ps -ef | awk 'NR==1; END{print}'
UID        PID  PPID  C STIME TTY          TIME CMD
root      1935  1837  0 20:07 pts/0    00:00:00 awk NR==1; END{print}

おすすめ記事