0 sed
语法介绍
- 数据的搜寻并替换
sed 's/要被取代的字串/新的字串/g'
1 测试文件准备
test.txt
测试文件:
# cat test.txt
1234567869
1234567869
1234567869
1234567869
2 删除所有行的前N个字符
sed 's/.\{N\}//' test.txt
- 删除所有行的前两个字符
# sed 's/..//' test.txt
34567869
34567869
34567869
34567869
- 删除所有行的前三个字符
# sed 's/...//' test.txt
4567869
4567869
4567869
4567869
或者
# sed 's/.\{3\}//' test.txt
4567869
4567869
4567869
4567869
3 删除所有行的后N个字符
sed 's/.\{N\}$//' test.txt
- 删除所有行的最后一个字符
# sed 's/.$//' test.txt
123456786
123456786
123456786
123456786
- 删除所有行的最后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
- 删除6及其以前的一个字符
第一个匹配的字符或字符串生效。
# sed 's/.6//' test.txt
12347869
12347869
12347869
12347869
- 删除6及其以前的2个字符
第一个匹配的字符或字符串生效。
# sed 's/..6//' test.txt
1237869
1237869
1237869
1237869
或
# sed 's/.\{2\}6//' test.txt
1237869
1237869
1237869
1237869
- 删除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
- 删除6及其以后的1个字符
从前往后,第一个匹配的字符串生效。
# sed 's/6.//' test.txt
12345869
12345869
12345869
12345869
- 删除6及其以后的3个字符
# sed 's/6...//' test.txt
123459
123459
123459
123459
或
# sed 's/6.\{3\}//' test.txt
123459
123459
123459
123459
- 删除6及其以后的所有字符
sed 's/str_to_match.*//' test.txt
从前向后,第一个匹配的字符或字符串生效。
# sed 's/6.*//' test.txt
12345
12345
12345
12345
参考
sed --help
网友评论