Linux:文本处理

常用命令

tr命令

删除一段文本信息中的某些文字。或者将其进行转换。

用法:tr [选项]... SET1 [SET2]
选项:
  -c, -C, --complement    use the complement of SET1
  -d, --delete            delete characters in SET1, do not translate
  -s, --squeeze-repeats   replace each sequence of a repeated character
                            that is listed in the last specified SET,
                            with a single occurrence of that character
  -t, --truncate-set1     first truncate SET1 to length of SET2
  
  SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:
  \NNN	八进制值为NNN 的字符(1 至3 个数位)
  \\		反斜杠
  \a		终端鸣响
  \b		退格
  \f		换页
  \n		换行
  \r		回车
  \t		水平制表符
  \v		垂直制表符
  字符1-字符2	从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]	在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]	对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]	所有的字母和数字
  [:alpha:]	所有的字母
  [:blank:]	所有呈水平排列的空白字符
  [:cntrl:]	所有的控制字符
  [:digit:]	所有的数字
  [:graph:]	所有的可打印字符,不包括空格
  [:lower:]	所有的小写字母
  [:print:]	所有的可打印字符,包括空格
  [:punct:]	所有的标点字符
  [:space:]	所有呈水平或垂直排列的空白字符
  [:upper:]	所有的大写字母
  [:xdigit:]	所有的十六进制数
  [=字符=]	所有和指定字符相等的字符


删除 “hello shiyanlou” 中所有的’o’,‘l’,‘h’

echo "hello shiyanlou" | tr -d "olh"

将"hello" 中的ll,去重为一个l

echo 'hello' | tr -s 'l'

将输入文本,全部转换为大写或小写输出

echo 'input some text here' | tr '[:lower:]' '[:upper:]'
col命令

将Tab换成对等数量的空格键,或反转这个操作。

用法: col [-bfhpx] [-l nline]

-x	将Tab转换为空格
-h	将空格转换为Tab(默认选项)

使用 col -x 将 /etc/protocols 中的 Tab 转换为空格,然后再使用 cat 查看

cat /etc/protocols | col -x | cat -A
join命令

将两个文件中包含相同内容的那一行合并在一起

用法:join [选项]... 文件1 文件2
选项:
  -a FILENUM        also print unpairable lines from file FILENUM, where
                      FILENUM is 1 or 2, corresponding to FILE1 or FILE2
  -e EMPTY          replace missing input fields with EMPTY
  -i, --ignore-case  ignore differences in case when comparing fields
  -j FIELD          equivalent to '-1 FIELD -2 FIELD'
  -o FORMAT         obey FORMAT while constructing output line
  -t CHAR           use CHAR as input and output field separator
  -v 文件编号        	类似 -a 文件编号,但禁止组合输出行
  -1 域          	在文件1 的此域组合
  -2 域          	在文件2 的此域组合
  --check-order     	检查输入行是否正确排序,即使所有输入行均是成对的
  --nocheck-order   	不检查输入是否正确排序
  --header          	将首行视作域的头部,直接输出而不对其进行匹配
  -z, --zero-terminated     line delimiter is NUL, not newline

将file1和file2两个文件内容合并在一起,输出"1 hello shiyanlou"

echo '1 hello' > file1
echo '1 shiyanlou' > file2
join file1 file2

将file1和file2两个文件内容合并在一起,以"1"为分隔符,输出"1 hello1 shiyanlou"

join -t "1" file1 file2 
paste命令

在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。与join命令类似。

用法:paste [选项]... [文件]...
如果没有指定文件,或者文件为"-",则从标准输入读取。

必选参数对长短选项同时适用。
  -d, --delimiters=列表	改用指定列表里的字符替代制表分隔符
  -s, --serial		不使用平行的行目输出模式,而是每个文件占用一行
  -z, --zero-terminated    line delimiter is NUL, not newline

合并文件内容并指定合并的分隔符为“:”,默认为Tab

paste -d ':' file1 file2

不合并到一行,每个文件为一行

paste -s file1 file2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值