Bash

如何從 cat 輸出中讀取第一行和最後一行?

  • January 14, 2019

我有文本文件。任務 - 之後從文件中獲取第一行和最後一行

$ 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 和更短的解決方案……

sed解決方案:

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

stdinif 讀取時看起來像這樣(例如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解決方案:

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}

引用自:https://unix.stackexchange.com/questions/139089