如何在Bash中提取文件每行的最后有效单词(无视行长度)
Bash环境下提取每行最后一个有效单词的方案
以下是几种针对你文件格式优化的可行实现方法:
方法一:使用awk处理
利用分号作为分隔符,直接取倒数第二个非空字段(每行末尾的分号会生成一个空字段):
awk -F';' '{print $(NF-1)}' your_file.txt
原理:-F';'将每行按分号分割,NF表示当前行的总字段数,NF-1对应最后一个有效项的字段位置。
方法二:使用sed处理
通过正则匹配替换,保留最后一个分号前的有效内容:
sed -E 's/.*;([^;]+);? *$/\1/' your_file.txt
原理:.*;匹配最后一个分号之前的所有内容,([^;]+)捕获分号后的有效单词,;? *$匹配末尾可选的分号和空格,最终替换为捕获的目标内容。
方法三:使用grep处理
通过Perl正则的正向预查和前缀忽略功能,精准提取目标内容:
grep -oP '.*;\K[^;]+(?=;? *$)' your_file.txt
原理:.*;\K忽略到最后一个分号的所有前置内容,[^;]+匹配目标单词,(?=;? *$)确保后面是末尾的分号和空格,-o参数让grep只输出匹配的部分。
内容的提问来源于stack exchange,提问作者Rodriguez J Mathew
相关产品推荐
相关产品推荐

