bash
[root@localhost shell]# ifconfig | cut -c-10 | tr -d ' ' | tr -s '\n'
ens33:fla
in
in
et
RX
RX
TX
TX
lo:flags=
in
in
lo
RX
RX
TX
TX
[root@localhost shell]#
ifconfig输出的每行前10个字符被保留用于网络接口名称。
cut命令提取每一行的前10个字符。
tr -d ' '删除每一行的所有空格。
tr -s 'n'压缩多个换行符以生成接口名称列表。
cut命令是一个用于文本处理的实用程序,可以从文件或stdin(标准输入)中提取数据的特定列,并且支持多种选项来修改提取出来的文本。以下是cut命令的常见选项及其用法:
-
-f:指定需要提取的列数,可以是单个列,也可以是多个列,使用逗号分隔。如:cut -f1,3 表示提取第1列和第3列。如果想选择所有的列,可以使用-f-选项。
-
-d:指定列之间的分隔符,默认的分隔符是制表符,也可以是其他符号,如空格、冒号等。如:cut -d":" -f1,3 提取以冒号为分隔符的第1列和第3列。
-
-s:不输出行中不包含分隔符的行,这个功能只有在结合其他命令使用时才会用到。
-
--complement:反向提取列,提取所有未指定的列。如:cut --complement -f1 提取除第1列外的所有列。
使用示例:
1.从文件中提取文字列。
假设有一个test.txt文件,内容如下:
apple,1.00,red
banana,0.50,yellow
orange,0.80,orange
如果想要提取第1列和第3列,可以使用以下命令:
cut -d',' -f1,3 test.txt
输出结果如下:
apple,red
banana,yellow
orange,orange
2.从stdin中提取文字列。
使用echo
命令生成测试数据:
echo 'apple,1.00,red
banana,0.50,yellow
orange,0.80,orange' | cut -d',' -f1,3
输出结果同上。
3.反向提取列。
cut --complement -f1 test.txt
输出结果如下:
1.00,red
0.50,yellow
0.80,orange
cut命令的-c选项用于指定需要提取的字符范围,即指定提取的列为以字符为单位的范围。例如,使用cut -c1-5命令可以提取每行文本的前5个字符。以下是-c选项常见的使用方式:
-
指定单个字符:使用-c选项后跟所需提取的字符位置即可,例如:cut -c 1 表示提取每行的第一个字符。
-
指定范围:使用-c选项后跟所需提取的字符范围,例如:cut -c 1-5 表示提取每行的前5个字符。
-
指定多个范围:使用-c选项后跟多个字符范围,用逗号隔开,例如:cut -c 1-5,10-12 表示提取每行的前5个字符和第10到12个字符。
-
使用"-"代表所有字符:使用-c选项后跟"-"表示需要提取所有的字符,例如:cut -c - 表示提取所有行的所有字符。
使用示例:
1.从文件中提取单个字符。
假设有一个test.txt文件,内容如下:
apple
banana
orange
如果想要提取每行的第一个字符,可以使用以下命令:
cut -c 1 test.txt
输出结果如下:
a
b
o
2.从文件中提取范围内的字符。
如果想要提取每行的第1到3个字符,可以使用以下命令:
cut -c 1-3 test.txt
输出结果如下:
app
ban
ora
3.从文件中提取多个范围内的字符。
如果想要提取每行的第1到3个字符和第5到6个字符,可以使用以下命令:
cut -c 1-3,5-6 test.txt
输出结果如下:
ap,e
ba,na
or,ge
4.从stdin中提取字符。
使用echo
命令生成测试数据:
echo 'apple
banana
orange' | cut -c 1-3
输出结果同上。
tr命令用于转换字符,是一个非常常用的命令。它可以读取输入流并将其中一些字符替换为其他字符。以下是tr命令常用的选项:
-
-d:删除指定的字符。
-
-s:合并重复出现的字符。
-
-c:将字符集中未出现的字符作为匹配字符,进行替换或删除。
-
字符集1/字符集2:用字符集1中的字符替换输入流中出现的字符集2中的字符。
使用示例:
5.删除指定字符。
假设有一个文件test.txt,内容如下:
Linux is an open-source operating system.
如果想要删除其中的所有小写字母a,可以使用以下命令:
tr -d 'a' < test.txt
输出结果如下:
Linux is n open-source operting system.
6.合并重复字符。
如果想要将输入流中的重复字符合并为单个字符,可以使用以下命令:
echo 'abbbccccddddd' | tr -s 'abcd'
输出结果为:
abcd
7.将字符集中未出现的字符作为匹配字符,进行替换或删除。
如果想要保留test.txt文件中所有的数字和大写字母,删除其余所有字符,可以使用以下命令:
tr -c '[:digit:][:upper:]' '\n' < test.txt
输出结果为:
L
1
O
8.字符替换。
如果想要将文件中的所有小写字母替换为大写字母,可以使用以下命令:
tr '[:lower:]' '[:upper:]' < test.txt
输出结果如下:
LINUX IS AN OPEN-SOURCE OPERATING SYSTEM.