![grep -- 删除分隔符标记后的文本](https://linux22.com/image/321/grep%20--%20%E5%88%A0%E9%99%A4%E5%88%86%E9%9A%94%E7%AC%A6%E6%A0%87%E8%AE%B0%E5%90%8E%E7%9A%84%E6%96%87%E6%9C%AC.png)
我有一个文件,其中我需要消除;
每一行第一行之后的所有内容。
所以像这样的文件:
sdfsdsdf;
fsdfsddf;sdfsd;
会导致这样的结果:
sdfsdsdf
fsdfsddf
我已经调查过grep
和sed
。我希望得到包含这些命令中的任何一个的答案。
答案1
另一种选择是使用cut
命令
cat a.file | cut -d';' -f1
答案2
sed
在这种情况下,可能比 awk 或 perl 最简单、更快:
sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name
答案3
我通常用于awk
这样的事情:
cat a.file | awk -F=";" '{ print $1 }'
这将获取文件的每一行并在分隔符之前打印第一组-F
答案4
这是使用 GNU 的一种方法grep
:
grep -Po "^[^;]+(?=;?)" filename