sed常用文本操作-文本替换

0 sed语法介绍

  1. 数据的搜寻并替换
sed 's/要被取代的字串/新的字串/g'

1 测试文件准备

test.txt
测试文件:

# cat test.txt
1234567869
1234567869
1234567869
1234567869

2 删除所有行的前N个字符

sed 's/.\{N\}//' test.txt

  1. 删除所有行的前两个字符
# sed 's/..//' test.txt
34567869
34567869
34567869
34567869
  1. 删除所有行的前三个字符
# sed 's/...//' test.txt
4567869
4567869
4567869
4567869

或者

# sed 's/.\{3\}//' test.txt
4567869
4567869
4567869
4567869

3 删除所有行的后N个字符

sed 's/.\{N\}$//' test.txt

  1. 删除所有行的最后一个字符
# sed 's/.$//' test.txt
123456786
123456786
123456786
123456786
  1. 删除所有行的最后2个字符
# sed 's/..$//' test.txt
12345678
12345678
12345678
12345678

# sed 's/.\{2\}$//' test.txt
12345678
12345678
12345678
12345678

4 删除指定字符串及其以前的N个字符

sed 's/.\{N\}str_to_match//' test.txt

  1. 删除6及其以前的一个字符
    第一个匹配的字符或字符串生效。
# sed 's/.6//' test.txt
12347869
12347869
12347869
12347869
  1. 删除6及其以前的2个字符
    第一个匹配的字符或字符串生效。
# sed 's/..6//' test.txt
1237869
1237869
1237869
1237869

# sed 's/.\{2\}6//' test.txt
1237869
1237869
1237869
1237869
  1. 删除6及其以前的所有字符
    从后向前,第一个匹配的字符或字符串生效。
    sed 's/^.*str_to_match//' test.txt
# sed 's/^.*6//' test.txt
9
9
9
9

# sed 's/.*6//' test.txt
9
9
9
9

4 删除指定字符串及其以后的N个字符

sed 's/str_to_match.\{N\}//' test.txt

  1. 删除6及其以后的1个字符
    从前往后,第一个匹配的字符串生效。
# sed 's/6.//' test.txt
12345869
12345869
12345869
12345869
  1. 删除6及其以后的3个字符
# sed 's/6...//' test.txt
123459
123459
123459
123459

# sed 's/6.\{3\}//' test.txt
123459
123459
123459
123459
  1. 删除6及其以后的所有字符
    sed 's/str_to_match.*//' test.txt
    从前向后,第一个匹配的字符或字符串生效。
# sed 's/6.*//' test.txt
12345
12345
12345
12345

参考

sed --help

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容