我有一个具有以下格式的文本文件:
FirstName LastName
Georges Bernard
Henry Grey
名字与第二个名字之间用制表符 (\t) 隔开。我想在文件中的每一行附加一个年龄字段(它也应该通过制表符与姓氏字段分开)。
最终文件应如下所示:
FirstName LastName Age
Georges Bernard 20
Henry Grey 20
我有一个具有以下格式的文本文件:
FirstName LastName
Georges Bernard
Henry Grey
名字与第二个名字之间用制表符 (\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/" "$@"
两个版本的代码都需要 'age' 参数$1
并接受零个或多个要处理的文件名(如果没有给出文件名,则处理标准输入)。