使用cut命令实现字符串截取
选项:
-b ----> 字节 :-b 后面的列表指定字节位置(例如,-b1-72 将传递每行的前 72 个字节)。当 -b 和 -n 一起使用时,将调整 list,以便不会拆分多字节字符。
echo "123456789" | cut -b 3 //output : 3 //截取处于第三个字节的字符
echo "123456789" | cut -b -3 //output : 123 //从左边开始截取3个字符
echo "123456789" | cut -b 3-5 //output : 345 //从左边开始截取3到5位的字符
echo "123456789" | cut -b 3- //output : 3456789 //从左边开始截取从第三位到末尾的字符
---------------------------------------------------------------------------------------------------------------------------------
-c ----> 字符 :-c 后面的列表指定字符位置(例如,-c1-72 将传递每行的前 72 个字符)。
echo "123456789" |cut -c -7 //output : 1234567 //从左边开始截取7个字符
echo "123456789" |cut -c 7-9 //output : 789 //从左边开始截取7到9位的字符
---------------------------------------------------------------------------------------------------------------------------------
-f ----> 域 [-f后面是需要保留的列的位置; -d后面是分隔符,用来分隔被截取的字符串] :下面的列表 -f 是假定在文件中用分隔符分隔的字段列表(请参见 -d );例如,-f1,7 仅复制第一个和第七个字段。 除非指定了 -s,否则没有字段分隔符的行将原封不动地传递(对于表副标题很有用)。
-d delim :-d 后面的字符是字段分隔符(仅限 -f 选项)。 默认值为选项卡。空格或其他对 shell 具有特殊含义的字符必须用引号括起来。delim 可以是多字节字符。
echo "1|2|3|4|5|6|7|8|9" | cut -f1,3,5,7 -d"|" //output : 1|3|5|7
echo "1;2;3;4;5;6;7;8;9" | cut -f2,4,6 -d";" //output : 2;4;6
echo "1;2;3;4;5;6;7;8;9" | cut -f2-4,9 -d";" //output : 2;3;4;9
echo "1|2|3|4|5|6|7|8|9" | cut -f3,5,7,9 -d"|" //output :3|5|7|9 -f 后面数字的位置并不会影响输出结果的位置,都是从小到大输出
echo "1|2|3|4|5|6|7|8|9" | cut -f9,5,7,3 -d"|" //output :3|5|7|9 -f 后面数字的位置并不会影响输出结果的位置,都是从小到大输出
--------
-s :在 -f 选项的情况下禁止显示没有分隔符的行。除非指定,否则没有分隔符的行将原封不动地通过。
echo "1|2|3|4|5|6|7|8|9" | cut -f1,3,5,7 -d";" //原样输出:1|2|3|4|5|6|7|8|9
echo "1|2|3|4|5|6|7|8|9" | cut -s -f1,3,5,7 -d";" //输出位空,因为没有";"出现在目前的字符串中
---------------------------------------------------------------------------------------------------------------------------------
-n 只能与 -b 一起使用
-d 只能与 -f 一起使用
-s 只能与 -f 一起使用
-------------------------------------------------------------
在线编辑运行器:
https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash
=========================================================================