有网友碰到这样的问题“linux中的正则表达式linux的正则表达式”。小编为您整理了以下解决方案,希望对您有帮助:
解决方案1:
如何去除Linux文件的^M字符?
在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,
对于回车符的定义:
windows:0D0A
unixlinux:0A
MAC:0D
比较快捷的去除这些符号的方法有这么几种:
(1)是用VI的命令:
使用vi打开文本文件
vidos.txt
命令模式下输入
:setfileformat=unix
:w
(2)VI下使用正则表达式替换
g/^M/s/^M//
或者
%s/^M//g
(3)使用sed工具
sed’s/^M//’filename>tmp_filename
(4)既然window下的回车符多了‘r’,那么当然通过删除‘r’,也可以实现:
tr-d'r'
(5)最后一个方法是本人最常用的方法,个人觉得最方便
在终端下敲命令:
$dos2unixfilename
直接转换成unix格式,就OK了!~
Linuxshell中如何从路径名提取指定字符串?
这个不需要正则式效率差,难理解。使用两次shell扩展就可以了。#!/bin/basha=$1a=${a##*-}#从开头删除到顺数最后一个减号。a=${a%.*}#从结尾删除到倒数第一个小数点。
echo$a脚本保存为a.sh执行命令./a.sh“/home/lxy/hhhhh-a.bbb.cc.d”请把参数用引号括住。得到a.bbb.cc说明:${parameter#pattern}和${parameter##pattern}掐头,#是最小匹配,##是最大匹配,将变量从开头匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。
${parameter%pattern}和${parameter%%pattern}去尾,%是最小匹配,%%是最大匹配,将变量从结尾匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。
linuxtac命令详解?
用法:tac......
将每个指定文件按行倒置并写到标准输出。
如果不指定文件,或文件为-,则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-b,--before在行前而非行尾添加分隔标志
-r,--regex将分隔标志视作正则表达式来解析
-s,--separator=字符串使用指定字符串代替换行作为分隔标志
--help显示此帮助信息并退出
--version显示版本信息并退出
linux编辑模式怎么取消字符标注?
在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致,
对于回车符的定义:
windows:0D0A
unixlinux:0A
MAC:0D
比较快捷的去除这些符号的方法有这么几种:
(1)是用VI的命令:
使用vi打开文本文件
vidos.txt
命令模式下输入
:setfileformat=unix
:w
(2)VI下使用正则表达式替换
g/^M/s/^M//
或者
%s/^M//g
(3)使用sed工具
sed’s/^M//’filename>tmp_filename
(4)既然window下的回车符多了‘r’,那么当然通过删除‘r’,也可以实现:
tr-dr
(5)最后一个方法是本人最常用的方法,个人觉得最方便
在终端下敲命令:
$dos2unixfilename
直接转换成unix格式,就OK了!~
linux下对文件重命名是什么命令?
linux的文件重命名非常简单。常用的是mv命令和rename命令。下面介绍一下这两个命令的用法,具体结节可以参考手册。
1、mvmvfromfiletofile如把文件a.txt得命名为b.txt,可以是mva.txtb.txt。mv一次只能重命名一个文件,而且,它是移动命令。如果tofile已经存在的话,会直接装原文件覆盖,从而造成文件的丢失。当然有选项可以对已存在的文件进行提示,但是,我表示,那个选项我还真不常用。综合这两点考虑,还是决定看看rename吧。
2、renamerenamefromparttopartfilename或者rename's/frompart/topart/'filename如把文件a.txt得命名为b.txt,可以是rename'a''b'a.txt(这个没有试过,看网上别人说的,是这样子的。)还可以是:rename's/^a/b/'a.txt在有的系统之上,用前面的那句可以通过,在有的系统之上,用后面的这个可以通过。两个不一样,一个是C的,一个是perl的。明显看出,后面这条是正则表达式的写法。具体采用哪一种方式,可以manrename,在手册页的最后一行看版本。由于我使用的系统rename的版本是Perl的,所以我只能采用后面的这一种方式。rename强大的地方在于,你可以使用*,?等,对所有符合条件的文件名进行批量修改。而你在使用mv的时候,只能采用写脚本,用循环的方式来解决。