重击:从特定行删除特定字符范围

时间:2019-02-28 15:21:52

标签: awk

我有一个文本文件,只想从第11行中删除字符23-28:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

因此结果将是:

Lorem ipsum dolor sit consectetur adipiscing elit.

这可以通过sed,awk或cut命令完成吗?

3 个答案:

答案 0 :(得分:3)

sed也可以做到这一点。

sed -E '11 s/^(.{22}).{6}(.*)/\1\2/' file

在第11行上(准确地),记住前22个字符,忽略下6个字符,记住其余的行。用记住的零件代替线。

在其他任何地方,都按原样打印。

答案 1 :(得分:2)

请您尝试以下操作(由于未提供示例,因此无法对其进行测试)。另外,我还假设您需要从第11行开始直到Input_file的最后一行执行此操作。

awk 'FNR>10{print substr($0,1,22) substr($0,29);next} 1'   Input_file

如果要从第11行的23到28中删除字符,而不是所有行,请尝试执行以下操作。

awk 'FNR==11{print substr($0,1,22) substr($0,29);next} 1'   Input_file

答案 2 :(得分:1)

awk 'NR==11{$0=substr($0,1,22) substr($0,29)} 1' file