![获取一行的最后一个元素,用 ; 分隔](https://linux22.com/image/143066/%E8%8E%B7%E5%8F%96%E4%B8%80%E8%A1%8C%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%EF%BC%8C%E7%94%A8%20%3B%20%E5%88%86%E9%9A%94.png)
我有一个文件(test.txt),其中分隔符是;。我怎样才能写出每行的最后一个元素?(每个元素的长度不同)
答案1
sed 's/.*;//' < test.txt
;
删除每行直到最后一个的所有内容。
或者与awk
:
awk -F';' '{print $NF}' < test.txt
如果您事先知道字段的数量,则可以使用cut
。例如,如果有 4 个字段:
cut -d';' -f4 < test.txt
但要注意,如果一行中的字段少于 4 个,那么它将返回一个空行除了;
如果只有一个字段(行中没有),在这种情况下它将输出整行(第一个字段)。中的一个已知错误功能cut
。
答案2
#!/bin/bash
while read line;
do
echo $(echo $line | awk -F ';' '{print $NF}')
done < test.txt
这是一个简单的脚本,它将把 的每一行test.txt
作为输入,并打印以 分隔的最后一个元素;
。
答案3
或者在bash中:
#!/bin/bash
while read line ; do
echo ${a##*;}
done