linux中的正则表达式(linux 的正则表达式)
如何去除Linux文件的^M字符?
在linux下,不可避免的會用VIM打開一些windows下編輯過的文本文件。我們會發現文件的每行結尾都會有一個^M符號,這是因為 DOS下的編輯器和Linux編輯器對文件行末的回車符處理不一致,
對于回車符的定義:
windows:0D0A
unixlinux: 0A
MAC: 0D
比較快捷的去除這些符號的方法有這么幾種:
(1)是用VI的命令:
使用vi打開文本文件
vi dos.txt
命令模式下輸入
:set fileformat=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)最后一個方法是本人最常用的方法,個人覺得最方便
在終端下敲命令:
$ dos2unix filename
直接轉換成unix格式,就OK了!~
Linuxshell中如何從路徑名提取指定字符串?
這個不需要正則式效率差,難理解。使用兩次shell 擴展就可以了。#!/bin/basha="$1"a="${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,最后擴展為原變量值去掉匹配的內容后的內容。
linux tac命令詳解?
用法: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打開文本文件
vi dos.txt
命令模式下輸入
:set fileformat=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)最后一個方法是本人最常用的方法,個人覺得最方便
在終端下敲命令:
$ dos2unix filename
直接轉換成unix格式,就OK了!~
linux下對文件重命名是什么命令?
linux的文件重命名非常簡單。常用的是mv命令和rename命令。下面介紹一下這兩個命令的用法,具體結節可以參考手冊。
1、mvmv fromfile tofile 如把文件a.txt得命名為b.txt,可以是mv a.txt b.txt。 mv一次只能重命名一個文件,而且,它是移動命令。如果tofile已經存在的話,會直接裝原文件覆蓋,從而造成文件的丟失。當然有選項可以對已存在的文件進行提示,但是,我表示,那個選項我還真不常用。綜合這兩點考慮,還是決定看看rename吧。
2、renamerename frompart topart filename 或者 rename 's/frompart/topart/' filename 如把文件a.txt得命名為b.txt,可以是rename 'a' 'b' a.txt (這個沒有試過,看網上別人說的,是這樣子的。)還可以是:rename 's/^a/b/' a.txt 在有的系統之上,用前面的那句可以通過,在有的系統之上,用后面的這個可以通過。兩個不一樣,一個是C的,一個是perl的。明顯看出,后面這條是正則表達式的寫法。具體采用哪一種方式,可以man rename,在手冊頁的最后一行看版本。由于我使用的系統rename的版本是Perl的,所以我只能采用后面的這一種方式。 rename 強大 的地方在于,你可以使用*,?等,對所有符合條件的文件名進行批量修改。而你在使用mv的時候,只能采用寫腳本,用循環的方式來解決。
總結
以上是生活随笔為你收集整理的linux中的正则表达式(linux 的正则表达式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vaadin_Vaadin和DukeSc
- 下一篇: 修复linux系统的方法(修复linux