![用sed删除每行的第二个字符](https://linux22.com/image/158727/%E7%94%A8sed%E5%88%A0%E9%99%A4%E6%AF%8F%E8%A1%8C%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
编写一条sed
命令,删除文件中每行的第二个字符。
sed -e 's/^.//' sample
上述命令删除第一个字符。但是如何单独指定第二个字符呢?
答案1
sed 's/.//2' sample
尾随是命令 in2
的“标志” (就像有时过度使用的那样),它指示仅将替换应用于每行正则表达式的第二个匹配项。由于正则表达式是(匹配任何单个字符),这将从每个输入行中删除第二个字符。s
sed
g
sed
.
/
您可以在命令的最后分隔符后使用任何正整数s
来向前跳过一行中的一些匹配项。
答案2
如果您sed
支持反向引用:
sed -E 's/^(.)./\1/'
答案3
根据您的具体情况
您可以使用以下规则
sed 's/.//2' sample
其中2
对应于第二个字符。
作为一个假人的例子输入文件名为test.txt
qwertyuiop
asdfghjkl
zxcvbnm
这输出该sed 's/.//2' test.txt
命令是
qertyuiop
adfghjkl
zcvbnm
作为基本规则
您可以使用以下方法删除Nth
模式的字符(即所有字符).
sed 's/.//N' sample