使用 sed 命令

使用 sed 命令

我有其中一个文件。

第一行是数字,第二行是字母,第三行是特殊字符。

这不断重复。我的意思是第一行是数字,第二行是字母,第三行是特殊字符,第四行是数字,第五行是字母,第六行是特殊字符,一遍又一遍地重复。我想提取带有字母的行并将它们重定向到另一个文件。

我知道如何重定向。这是我所知道的命令。(我认为这可以作为一个提示……)

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可以读作nskip 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
+}\[_

相关内容