1
NeezerGu 2021-05-25 17:26:09 +08:00
正则
先判断.log 结尾的文件,取点前面的字符串,所有\d 替换成空 |
2
Cowhitewhite 2021-05-25 17:28:22 +08:00
都叫 d.log 不会被覆盖吗
|
3
toyst OP @Cowhitewhite 这个不是重点。。
|
5
hendyzone 2021-05-25 17:42:59 +08:00
`sed 's/[0-9]//g' 文件名`
|
6
lamesbond 2021-05-25 17:57:57 +08:00
找出 log 关键字所在行号,在行号里面循环,用 sed 删除单行里的数字
|
7
zplee 2021-05-25 18:00:47 +08:00 1
import re
res =[] with open("test.txt", "r") as f: for line in f: res.append(list(line.strip('\n').split(','))) for i in res: r = re.search('log', i[0]) if r: print(re.sub(r"\d",'',i[0])) else: print(i[0]) # python 遍历每行正则匹配,然后替换掉数字 |
8
hasdream 2021-05-25 18:05:42 +08:00
sed -i '/.log/s/[0-9]\?//g' aafile
|
9
leavic 2021-05-25 18:07:53 +08:00 2
有这功夫我随便找个文本编辑器,把 0-9 全部替换为空都结了,还写脚本。
|
10
ik 2021-05-25 19:20:30 +08:00 via iPhone
sed '/log/s/[0-9]//g' xxx
|
11
iamzcr 2021-05-25 20:08:55 +08:00
看到这问题,用 go 的 slice+map 写了下,不知道效率咋样,原理就是按照 ASCII 编码去取 0-9ASCII 编码的范围
package main import ( "bufio" "fmt" "io" "os" "strings" ) func delSlice(slice []byte, dels []byte) []byte { dMap := make(map[byte]bool) for _, s := range dels { dMap[s] = true } for i := 0; i < len(slice); i++ { if _, ok := dMap[slice[i]]; ok { slice = append(slice[:i], slice[i+1:]...) i = i - 1 } } return slice } func ReadLine(fileName string) { f, err := os.Open(fileName) if err != nil { panic(err) } buf := bufio.NewReader(f) for { line, err := buf.ReadString('\n') if err != nil { if err == io.EOF { break } } line = strings.TrimSpace(line) slice := make([]byte, 1) slice = []byte(line) outSlice := make([]byte, 1) for i := 0; i < len(slice)-1; i++ { if slice[i] > 47 && slice[i] <= 58 { outSlice = append(outSlice, slice[i]) } } inSlice := delSlice(slice, outSlice) str := string(inSlice) fmt.Println(str) } } func main() { ReadLine("./test.txt") } |
14
autoxbc 2021-05-25 23:30:58 +08:00
const path = './test.txt';
const text = Deno.readTextFileSync(path) .match(/^.+$/gm) .map( line => line.endsWith('.log') ? line.replace( /\d/g ,'') : line ) .join('\n'); Deno.writeTextFileSync( path , text ); |
15
agnoe 2021-05-26 00:36:33 +08:00
SED 找到某一行,然后在这一行中进行替换的命令写法
sed -i '/#PermitRootLogin/s/#//g' /etc/ssh/sshd_config |
16
xingheng 2021-05-26 08:10:37 +08:00
|
17
dier 2021-05-26 09:41:12 +08:00
sed -ie "/log/ {s/[0-9]//g}" filename.txt
|
18
dier 2021-05-26 09:42:47 +08:00
上面那条会修改原文件,如果不想修改原文件,去掉 e 这个参数即可 sed -i "/log/ {s/[0-9]//g}" filename.txt
|
19
dier 2021-05-26 09:43:41 +08:00
呃,写反了,去掉 i 这个参数 sed -e "/log/ {s/[0-9]//g}" filename.txt
|