Linux剪切字符串

时间:2013-05-17 12:07:53

标签: linux string bash cut

在Linux(Cento OS)中,我有一个文件,其中包含一些我想删除的附加信息。我想生成一个包含所有字符的新文件,直到第一个|

该文件包含以下信息:

ALFA12345|7890
Beta0-XPTO-2|30452|90 385|29
ZETA2334423 435; 2|2|90dd5|dddd29|dqe3

预期的输出将是:

ALFA12345
Beta0 XPTO-2
ZETA2334423 435; 2

删除字符|(包括)之后的所有字符。

对于阅读File1并根据此特定要求生成File2的脚本的任何建议?

4 个答案:

答案 0 :(得分:5)

尝试

cut -d'|' -f1 oldfile > newfile

答案 1 :(得分:3)

而且,为了完善“大3”,这里是awk版本:

awk -F\| '{print $1}' in.dat

答案 2 :(得分:1)

您可以使用简单的sed脚本。

sed 's/^\([^|]*\).*/\1/g' in.dat 
ALFA12345
Beta0-XPTO-2
ZETA2334423 435; 2

重定向到文件以捕获输出。

sed 's/^\([^|]*\).*/\1/g' in.dat > out.dat

答案 3 :(得分:0)

使用grep

$ grep -o '^[^|]*' file1
ALFA12345
Beta0-XPTO-2
ZETA2334423 435; 2

$ grep -o '^[^|]*' file1 > file2