Bash
如何從 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 和更短的解決方案……
sed解決方案:
sed -e 1b -e '$!d' file
從
stdin
if 讀取時看起來像這樣(例如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}