一点文件操作命令

2019-04-22  本文已影响0人  记号晴系

删除文本中多余的东西

> > > ~~~
> > > 
> > > # notepad++查找并删除重复行只需要一条命令
> > > ^(.*?)$\s+?^(?=.*^\1$) 
> > > 
> > > # 直接全部替换,注意勾选:正则和匹配行
> > > 
> > > ~~~
> > >
> > > 
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

-i 表示inplace edit,就地修改文件

 -r 表示搜索子目录

 -l 表示输出匹配的文件名
s表示替换,d表示删除

示例:

sed -i "s/shan/hua/g"  lishan.txt # 把当前目录下lishan.txt里的shan都替换为hua
sed的其他用法如下:

1、删除行首空格
   sed 's/^[ ]*//g' filename
   sed 's/^ *//g' filename
   sed 's/^[[:space:]]*//g' filename

2、行后和行前添加新行
   行后:sed 's/pattern/&\n/g' filename
   行前:sed 's/pattern/\n&/g' filename
   &代表pattern

3、使用变量替换(使用双引号)
    sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本
    sed -i '1 i\插入字符串' filename

5、在最后一行插入
    sed -i '$ a\插入字符串' filename

6、在匹配行前插入
    sed -i '/pattern/ i "插入字符串"' filename

7、在匹配行后插入
   sed -i '/pattern/ a "插入字符串"' filename

8、删除文本中空行和空格组成的行以及#号注释的行
   grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d
1、将文件file中出现的"abc"替换为"xyz"
 


代码如下:

# cat file | tr "abc" "xyz" > new_file

【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
 
2、使用tr命令“统一”字母大小写
(小写 --> 大写)

代码如下:

# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)

代码如下:

# cat file | tr [A-Z] [a-z] > new_file
3、把文件中的数字0-9替换为a-j
 

代码如下:

# cat file | tr [0-9] [a-j] > new_file
4、删除文件file中出现的"Snail"字符
代码如下:

# cat file | tr -d "Snail" > new_file

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
 
5、删除文件file中出现的换行'\n'、制表'\t'字符
代码如下:

# cat file | tr -d "\n\t" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。
 
6、删除“连续着的”重复字母,只保留第一个
代码如下:

# cat file | tr -s [a-zA-Z] > new_file
7、删除空行
代码如下:

# cat file | tr -s "\n" > new_file
8、删除Windows文件“造成”的'^M'字符
代码如下:

# cat file | tr -d "\r" > new_file

或者

代码如下:

# cat file | tr -s "\r" "\n" > new_file

【注意】这里-s后面是两个参数"\r"和"\n",用后者替换前者
 
9、用空格符\040替换制表符\011
代码如下:

# cat file | tr -s "\011" "\040" > new_file

10、把路径变量中的冒号":",替换成换行符"\n"
代码如下:

# echo $PATH | tr -s ":" "\n"
11、若要将大括号转换为小括号,请输入:
代码如下:

tr '{}' '()' < textfile > newfile

这便将每个 {(左大括号)转换成 ((左小括号),并将每个 }(右大括号)转换成 )(右小括号)。所有其它的字符都保持不变。
12、若要将大括号转换成方括号,请输入:
代码如下:

tr '{}' '\[]' < textfile > newfile

这便将每个 {(左大括号)转换成 [(左方括号),并将每个 }(右大括号)转换成 ](右方括号)。左方括号必须与一个 "\"(反斜扛)转义字符一起输入。
13、若要将小写字符转换成大写,请输入:
代码如下:

tr 'a-z' 'A-Z' < textfile > newfile
14、若要创建一个文件中的单词列表,请输入:
代码如下:

tr -cs '[:lower:][:upper:]' '[\n*]' < textfile > newfile

这便将每一序列的字符(除大、小写字母外)都转换成单个换行符。*(星号)可以使 tr 命令重复换行符足够多次以使第二个字符串与第一个字符串一样长。
15、若要从某个文件中删除所有空字符,请输入:
代码如下:

tr -d '\0' < textfile > newfile
16、若要用单独的换行替换每一序列的一个或多个换行,请输入:
代码如下:
tr -s '\n' < textfile > newfile
或
代码如下:

tr -s '\012' < textfile > newfile
17、若要以“?”(问号)替换每个非打印字符(有效控制字符除外),请输入:

代码如下:

tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile

这便对不同语言环境中创建的文件进行扫描,以查找当前语言环境下不能打印的字符。
18、要以单个“#”字符替换 <space> 字符类中的每个字符序列,请输入:
代码如下:

tr -s '[:space:]' '[#*]'
上一篇 下一篇

猜你喜欢

热点阅读