cut命令在Linux中用于按字符或字段截取字符串,-c按字符位置、-f按分隔符字段,-d指定单字符分隔符,但不支持多字符分隔符;复杂场景需用awk、sed、grep -o或bash内置操作。

在Linux中,要截取字符串,尤其是基于特定的分隔符进行字段分割,最常用且高效的工具就是
cut
OK,咱们直接聊聊
cut
cut
最常见的用法,当然是按字段分割。比如说,你有一个文件,里面每行都是用冒号
:
cut -d ':' -f 3 filename.txt
-d
cut
-f
-f
1-3
1,5
有时候,文件里可能用的是空格或者制表符做分隔,但它们看起来不那么“规矩”,比如多个空格连在一起。这时候,
cut
/etc/passwd
除了按字段,
cut
cut -c 1-5 filename.txt
-c
1,3,5
5-
我发现一个挺有意思的点是,很多人在刚接触
cut
-f
-c
-f
-c
cut
cut
这个问题问得好,因为现实世界的数据可不像教程里那么“干净”。我们经常会遇到用空格、制表符甚至多个字符组合做分隔符的情况。
cut
首先,
cut
-d
,
:
|
-d ','
-d '|'
cut -d ' ' -f 2 filename.txt
a b c
cut -d ' ' -f 2
b
对于这种情况,我通常会倾向于结合
tr
awk
cut
cat filename.txt | tr -s ' ' | cut -d ' ' -f 2
tr -s ' '
cut
另一个常见场景是,分隔符本身是特殊字符,比如
.
*
cut
-d
cut -d '.'
不过,如果你的分隔符是多个字符组成的字符串,比如
_SPLIT_
cut
cut
awk
awk -F '_SPLIT_' '{print $2}' filename.txtawk
-f
cut
所以,总结一下:
cut
tr
awk
cut
确实,
cut
cut
awk
sed
grep
bash
awk
cut
awk
awk -F 'STRING_DELIMITER' '{print $N}'awk '$3 > 10 {print $1, $5}' filename.txtawk
awk -F ':' '{print "User: " $1 ", UID: " $3}' /etc/passwdawk
cut
sed
sed
echo "Log entry (important_data_123) details" | sed -n 's/.*(\(.*\)).*/\1/p'
s
.*(\(.*\)).*
\1
sed -n
p
cut
cut
echo " hello world " | sed 's/^ *//; s/ *$//'
sed
cut
grep
-o
grep
-o
echo "IP: 192.168.1.10, Gateway: 192.168.1.1" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'192.168.1.10
192.168.1.1
grep -o
-E
bash
bash
VAR="abcdefg"
echo "${VAR:0:3}"abc
FILE="document.tar.gz"
echo "${FILE%.*}"document.tar
.
echo "${FILE%%.*}"document
.*
echo "${FILE#*.}"tar.gz
*.
echo "${FILE##*.}"gz
*.
所以,在选择工具时,我会先评估任务的复杂度。如果只是简单的按字段或按字符位置,
cut
awk
sed
grep -o
bash
以上就是如何在Linux中截取字符串 Linux cut字段分割技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号