![使用 sed 命令](https://linux22.com/image/912366/%E4%BD%BF%E7%94%A8%20sed%20%E5%91%BD%E4%BB%A4.png)
我有其中一个文件。
第一行是数字,第二行是字母,第三行是特殊字符。
这不断重复。我的意思是第一行是数字,第二行是字母,第三行是特殊字符,第四行是数字,第五行是字母,第六行是特殊字符,一遍又一遍地重复。我想提取带有字母的行并将它们重定向到另一个文件。
我知道如何重定向。这是我所知道的命令。(我认为这可以作为一个提示……)
sed -n '1 ~ 2p' 文件名(输出所有奇数行)和 sed -n '1 ~ 2!p' (输出所有偶数行)
我真的很想知道如何做到这一点。
另外,我对只用数字和特殊字符绘制线条的命令感到好奇。嗯
您可以使用的命令是上述两个命令。(我对使用 sed 很感兴趣)
我真的很想知道。
答案1
您想搜索 Alpha 字符?
SED 更适合流编辑,这里有一个更简单的搜索方法
grep -E '[a-zA-Z]' infile > outfile
接下来,如果你想要除 Alpha 之外的所有内容,请输入以下内容
grep -E '[^a-zA-Z]' infile > outfile
但如果你想使用 SED 删除除第二行之外的所有内容,请执行以下操作
sed -n 'n;p;n' infile
答案2
GNU sedn~m
可以读作n
skip m
。因此,给定一个如下文件:
1234
abcd
#$^*
5678
zxcv
)&*%
96401
YnayI
+}\[_
然后只打印第一,第三,第四,第六等等,你可以删除2
跳过3
:
$ sed '2~3d' file
1234
#$^*
5678
)&*%
96401
+}\[_
效率较低的是,您可以打印1
和,并在两种情况下3
跳过:3
$ sed -n -e '1~3p' -e '3~3p' file
1234
#$^*
5678
)&*%
96401
+}\[_