1

在 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

4 回答 4

5

尝试

cut -d'|' -f1 oldfile > newfile
于 2013-05-17T12:10:04.577 回答
3

而且,为了完善“三巨头”,这里是awk版本:

awk -F\| '{print $1}' in.dat
于 2013-05-17T14:30:00.503 回答
1

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

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

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

sed 's/^\([^|]*\).*/\1/g' in.dat > out.dat
于 2013-05-17T12:13:01.583 回答
0

并与grep

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

$ grep -o '^[^|]*' file1 > file2
于 2013-05-17T14:55:52.677 回答