2

我有一个具有以下格式的文本文件:

FirstName   LastName  
Georges     Bernard
Henry       Grey

名字与第二个名字之间用制表符 (\t) 隔开。我想在文件中的每一行附加一个年龄字段(它也应该通过制表符与姓氏字段分开)。

最终文件应如下所示:

FirstName    LastName    Age
Georges      Bernard     20
Henry        Grey        20
4

2 回答 2

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
于 2013-06-26T23:30:28.520 回答
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/" "$@"

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

于 2013-06-26T23:33:21.347 回答