如何在bash脚本中读取特殊行的文件

如何在bash脚本中读取特殊行的文件,bash,shell,Bash,Shell,我只想从bashshell中的文件中读取偶数行号,怎么做 另外,我只想读取文件的第五行,然后如何读取?您可以使用tail命令。对于第一种情况,将其放在for循环中,如果您得到第一种情况,那么第二种情况就完全不重要了 或者你甚至可以使用awk: awk NR==5 file_name awk'NR%2==1' 关于第二个问题: awk 'NR == 5' <filename> awk'NR==5' 您还可以使用sed获取指定范围内的数字: sed -ne '5,5p' <

我只想从bashshell中的文件中读取偶数行号,怎么做


另外,我只想读取文件的第五行,然后如何读取?

您可以使用
tail
命令。对于第一种情况,将其放在for循环中,如果您得到第一种情况,那么第二种情况就完全不重要了

或者你甚至可以使用awk:

awk NR==5 file_name 
awk'NR%2==1'
关于第二个问题:

awk 'NR == 5' <filename>
awk'NR==5'
您还可以使用sed获取指定范围内的数字:

sed -ne '5,5p' <filename>
sed-ne'5,5p'

要使用gnu sed读取偶数文件:

sed -n "2~2 p" file
要使用sed打印文件中的特定行#,请执行以下操作:

sed '5q;d' file
试试这个:

例如,3和6之间的行

awk 'NR>=3 && NR<=6'`
awk'NR>=3&&NR=3&&NRawk通常是答案(或者,现在,Perl、Python等也是如此)

如果出于某种原因,您必须仅使用bash和基本shell实用程序执行此操作:

cat file | \
while read line; do 
   i=$(( (i + 1) % 2 )) 
   if [[ $i -eq 0 ]]; then 
      echo $line // or whatever else you wanted to do with it
   fi
done
要获得一条特定的线路:

cat file | head -5 | tail -1

无用地使用
cat
;读行时使用
;做完成
头-5文件

cat file | \
while read line; do 
   i=$(( (i + 1) % 2 )) 
   if [[ $i -eq 0 ]]; then 
      echo $line // or whatever else you wanted to do with it
   fi
done
cat file | head -5 | tail -1