嗨,
大概这很容易,但是我现在不明白这一点。在Linux中,shell在给定文本文件的情况下如何执行cat文件名之类的操作,因此我仅看到第一行,第三行,5、7、9等?
如果不使用cat,则使用另一个命令
谢谢
嗨,
大概这很容易,但是我现在不明白这一点。在Linux中,shell在给定文本文件的情况下如何执行cat文件名之类的操作,因此我仅看到第一行,第三行,5、7、9等?
如果不使用cat,则使用另一个命令
谢谢
Answers:
使用awk
:awk 'NR % 2 == 0' filename
编辑:删除{print}
,如ghostdog74的答案所示,并由Roberto Bonvallet评论。
2 == 0
用2 == 1
的正好相反。
使用sed:
sed -n 1~2p filename
sed
不是默认GNU的系统。
sed
手册gnu.org/software/sed/manual/html_node/Addresses.html#Addresses说“第一步〜这个GNU扩展…”。它没有提及--posix
。当我尝试gsed --posix -n 1~2p
(GNU sed 4.2.1)时,我得到了gsed: -e expression #1, char 2: unknown command: ‘~’
。
在Google中进行简单搜索即可显示以下链接:http : //bash.cyberciti.biz/academic/write-odd-even-line-file/
您只需要稍微调整一下。
我的2美分。
尚未对此进行测试(在Mac OS X上似乎不起作用),但是GNU sed支持first~step
作为地址选择,因此例如:
sed -n 1~2p file
从第一行开始,然后每隔一行打印一次。
sed
在基本安装中使用BSD 。
无法测试,找到了链接: cat -n $ 1 | grep“ $ ODDRE” | 切-b 8->奇数文件。
ODDRE
。但是,只有文件少于一百万行时,该答案才有效。
您可以使用这些命令来获得结果
awk'NR%2 == 1'
sed -ne'1〜2p'
ls -l
这里?
{print}
是默认操作,awk 'NR % 2 == 0' < myfile
就足够了。