我有一个文本文件,具有以下格式:
FirstName LastName Georges Bernard Henry Grey
FirstName与第二个名字通过制表符分隔(\ t)。 我想追加到文件中的每一行年龄字段(它也应该被一个制表符分隔的姓氏字段)。
最终文件应该如下所示:
FirstName LastName Age Georges Bernard 20 Henry Grey 20
用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
#!/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”参数,并且接受零个或多个要处理的文件名(如果没有给出文件名,则处理标准输入)。