如何在bash脚本中读取特殊行的文件
我只想从bashshell中的文件中读取偶数行号,怎么做如何在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' <
另外,我只想读取文件的第五行,然后如何读取?您可以使用
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