站点图标 谷姐靓号网

请教一下 shell 脚本大神-呼啦啦

Rate this post

有个文本文件,N 行

    a1.txt
    a7.txt
    d9.log
    3j.log
    i6j.log
    .
    .
    .
    abc.ini

复制代码
现在想把 log 文件名里面的数字去掉,请假一下大佬们应该怎么写啊

热议
推荐楼 zdszf

sed -i "s/[0-9]//g" filename

2楼 zxxx

d9.log -> d.log
d1.log -> d.log

这样吗?

3楼 your

一个循环可以搞定吧!!
我们所度过的每个平凡的日常,也许就是连续发生的奇迹。——《日常》

4楼 呼啦啦

对的,就是这样

5楼 呼啦啦

求大佬赐教啊

6楼 龟龟酱

文件名取成变量
然后
NEW=$(echo $xxx|sed s?1??g | sed s?2??g |sed s?3??g |sed s?4??g |sed s?5??g |sed s?6??g |sed s?7??g |sed s?8??g |sed s?9??g )
mv $LOD.log $NEW.log
比较蠢的办法,见谅~

7楼 2bitO

更新:20210525 17:46
搞错楼主的意思了,楼主的意思是修改一个文件里面的内容,我这个脚本是修改当前目录下的文件名字(去数字)

以下为原文
----------------------------------------------------------------
ls *.txt | grep -v $0 | while read line;
do
file_name=$(echo "${line}" | awk -F'.' '{print $1}')
extension=$(echo "${line}" | awk -F'.' '{print $2}')
new_file_name=$(echo "${file_name}" | sed -e "s/[0-9]//g")
new_file_name_full=''"${new_file_name}"'.'"${extension}"''
mv "${line}" "${new_file_name_full}"
done

8楼 ivanhao

这要是一千个就没法搞了啊,估计是要用到循环

10楼 龟龟酱

取文件名肯定要
我刚才居然忘了sed可以[1-9]。。。
老了老了

12楼 驴总

只会一点python

import re

with open('C:\\Users\\Administrator\\Desktop\\aaa.txt', 'r+', encoding='utf-8') as f:
content = f.read()
f.seek(0, 0)
f.truncate()
new_content = re.sub(r'[0-9]', '', content)
f.write(new_content)

13楼 wangjianjilei

我不会shell,直接拿php读取文件,按行读取,然后正则匹配,最后写回去

退出移动版