Linux 将文本文件解析为字符串输出

Linux 将文本文件解析为字符串输出,linux,bash,sed,Linux,Bash,Sed,所以我有一个名为employees.txt的文本文件,看起来像这样 Billy Madderson, M, 34 Allison McGever, F, 32 Bill Nye, M, 35 我正在尝试编写一个sed脚本,它将读取文本文件,然后以该格式输出它 是,现在岁了 我知道我需要设置IFS=,但我一直在研究如何将信息放入字符串中。非常感谢您的任何意见 我知道我需要设置IFS= 我不明白为什么这是必要的。据我所知,sed根本不使用IFS 将第一个,替换为是一个,M/F替换为男人/女人,第二

所以我有一个名为employees.txt的文本文件,看起来像这样

Billy Madderson, M, 34
Allison McGever, F, 32
Bill Nye, M, 35
我正在尝试编写一个sed脚本,它将读取文本文件,然后以该格式输出它 ,现在岁了

我知道我需要设置IFS=,但我一直在研究如何将信息放入字符串中。非常感谢您的任何意见

我知道我需要设置IFS=

我不明白为什么这是必要的。据我所知,
sed
根本不使用
IFS

将第一个
替换为
是一个
M
/
F
替换为
男人
/
女人
,第二个
替换为
和is
等等。唯一棘手的部分是只替换第二列中的
M
/
F
,而不是您遇到的第一列
M
/
F
。幸运的是,在第二列之后,不再有字母了,这简化了事情

sed 's/, M/ is a man/;s/, F/ is a woman/;s/, /, and is /;s/$/ years old now./' file
对于您的示例,输出是

Billy Madderson is a man, and is 34 years old now.
Allison McGever is a woman, and is 32 years old now.
Bill Nye is a man, and is 35 years old now.
我知道我需要设置IFS=

我不明白为什么这是必要的。据我所知,
sed
根本不使用
IFS

将第一个
替换为
是一个
M
/
F
替换为
男人
/
女人
,第二个
替换为
和is
等等。唯一棘手的部分是只替换第二列中的
M
/
F
,而不是您遇到的第一列
M
/
F
。幸运的是,在第二列之后,不再有字母了,这简化了事情

sed 's/, M/ is a man/;s/, F/ is a woman/;s/, /, and is /;s/$/ years old now./' file
对于您的示例,输出是

Billy Madderson is a man, and is 34 years old now.
Allison McGever is a woman, and is 32 years old now.
Bill Nye is a man, and is 35 years old now.

如果性别不是“M/F”,而是数字,会发生什么?比如在公司工作几年?所以你加了13.5,10.2,11.8?因为我假设你现在不能搜索和使用年龄和年龄的$?很抱歉,我只是想弄清楚sed,因为我认为$不能用于多个案例。
$
只是这一行的结尾。我用它来给每一行添加文本。如果在中间添加列,则在<代码> $< /代码>部分上没有任何更改。如果在末尾添加列,则必须以另一种方式插入
岁现在
,例如,通过替换
。如果将性别的“M/F”改为数字,会发生什么情况?比如在公司工作几年?所以你加了13.5,10.2,11.8?因为我假设你现在不能搜索和使用年龄和年龄的$?很抱歉,我只是想弄清楚sed,因为我认为$不能用于多个案例。
$
只是这一行的结尾。我用它来给每一行添加文本。如果在中间添加列,则在<代码> $< /代码>部分上没有任何更改。如果在末尾添加列,则必须以另一种方式插入
岁现在
,例如替换