轉(zhuǎn)載:https://www.cnblogs.com/sharesdk/p/14133293.html
打印前 N 行內(nèi)容
# head 打印前 6 行內(nèi)容
head -6 file.txt
head -n 6 file.txt
# sed 打印前 6 行內(nèi)容
sed -n '1,6p' file.txt
# awk 打印前 6 行內(nèi)容
awk 'NR<6' file.txt
打印指定行內(nèi)容
# sed 打印第 6 行內(nèi)容
sed -n '6p' file.txt
# awk 打印第 6 行內(nèi)容
awk 'NR==6' file.txt
# tail 配合 head,打印指定行內(nèi)容
tail -n +6 file.txt | head -1
打印指定范圍行內(nèi)容
# sed 打印 6~10 行內(nèi)容
sed -n '6,10p' file.txt
# awk 打印 6~10 行內(nèi)容
awk 'NR>4 && NR<11' file.txt
# tail 配合 head,打印 6~10 行內(nèi)容
tail -n +6 file.txt | head -6
打印跨行內(nèi)容
# sed 打印第 3 行 和 6~7 行內(nèi)容
sed -n '3p;6,7p' file.txt
# awk 打印第 3 行 和 6~7 行內(nèi)容
awk 'NR==3 || (NR>4 && NR<8)' file.txt
打印奇偶行內(nèi)容
# 打印奇數(shù)行內(nèi)容
# NR 表示行號
awk 'NR%2!=0' file.txt
awk 'NR%2' file.txt
# i 為變量,未定義變量初始值為 0,對于字符運算,未定義變量初值為空字符串
# 讀取第 1 行記錄,進行模式匹配:i=!0(!表示取反)。! 右邊是個布爾值,0 為假,非 0 為真,!0 就是真,因此 i=1,條件為真打印第一條記錄。
# 讀取第 2 行記錄,進行模式匹配:i=!1(因為上次 i 的值由 0 變成了 1),條件為假不打印。
# 讀取第 3 行記錄,因為上次條件為假,i 恢復(fù)初值為 0,繼續(xù)打印。以此類推...
# 上述運算并沒有真正的判斷記錄,而是布爾值真假判斷。
awk 'i=!i' file.txt
# m~np:m 表示起始行;~2 表示:步長
sed -n '1~2p' file.txt
# 先打印第 1 行,執(zhí)行 n 命令讀取當(dāng)前行的下一行,放到模式空間,后面再沒有打印模式空間行操作,所以只保存不打印,同等方式繼續(xù)打印第 3 行。
sed -n '1,$p;n' file.txt
sed -n 'p;n' file.txt
打印偶數(shù)行
# 打印偶數(shù)行內(nèi)容
awk 'NR%2==0' file.txt
awk '!(NR%2)' file.txt
awk '!(i=!i)' file.txt
sed -n 'n;p' file.txt
sed -n '1~1p' file.txt
sed -n '1,$n;p' file.txt
打印最后 N 行內(nèi)容
# tail 打印后 6 行內(nèi)容
tail -6 file.txt
tail -n 6 file.txt
打印最后一行內(nèi)容
# tail 打印最后一行內(nèi)容
tail -n 1 file.txt
# sed 打印最后一行內(nèi)容
sed -n '$p' file.txt
# awk 打印最后一行內(nèi)容
awk 'END {print}' file.txt
打印匹配行內(nèi)容
# 打印以 "1" 開頭的行內(nèi)容
sed -n '/^1/p' file.txt
grep "^1" file.txt
# 打印不以 "1" 開頭的行內(nèi)容
sed -n '/1/!p' file.txt
grep -v "^1" file.txt
# 從匹配 "02" 行到第 6 行內(nèi)容
sed -n '/02/,6p' file.txt
# 打印匹配 "02" 行 到匹配 "06" 行內(nèi)容
sed -n '/02/,/06/p' file.txt