我有一个文本文件,格式如下:
FirstName LastName
Georges Bernard
Henry Grey
FirstName通过制表符(\ t)与第二个名称分隔开。 我想在文件的每一行附加一个age字段(它也应该用一个制表符分隔Lastname字段)。
结束文件应如下所示:
FirstName LastName Age
Georges Bernard 20
Henry Grey 20
答案 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'参数,并接受零个或多个文件名进行处理(如果没有给出文件名,则处理标准输入)。