如何将选项卡附加到文本文件中每一行的末尾

时间:2013-06-26 23:21:46

标签: linux sed awk text-processing

我有一个文本文件,格式如下:

FirstName   LastName  
Georges     Bernard
Henry       Grey

FirstName通过制表符(\ t)与第二个名称分隔开。 我想在文件的每一行附加一个age字段(它也应该用一个制表符分隔Lastname字段)。

结束文件应如下所示:

FirstName    LastName    Age
Georges      Bernard     20
Henry        Grey        20

2 个答案:

答案 0 :(得分:4)

使用awk

awk '{$0=NR>1?$0"\t20":$0"\tAge"}1' myFile.txt

使用sed

sed '1s/$/\tAge/;2,$s/$/\t20/' myFile.txt

演示:

$ cat myFile.txt
FirstName   LastName  
Georges     Bernard
Henry       Grey

$ awk '{$0=NR>1?$0"\t20":$0"\tAge"}1' myFile.txt
FirstName   LastName    Age
Georges     Bernard     20
Henry       Grey        20

$ sed '1s/$/\tAge/;2,$s/$/\t20/' myFile.txt
FirstName   LastName    Age 
Georges     Bernard     20
Henry       Grey        20

答案 1 :(得分:2)

#!/bin/bash
age="${1:?must supply age as argument 1}"
shift
sed "s/$/       $age/" "$@"

其中空格序列表示源代码中的实际选项卡。有一些方法可以在不使用显式选项卡的情况下获取选项卡,例如:

#!/bin/bash
age="${1:?must supply age as argument 1}"
shift
sed "s/$/"$'\t'"$age/" "$@"

两个版本的代码都需要$1中的'age'参数,并接受零个或多个文件名进行处理(如果没有给出文件名,则处理标准输入)。