我有这个示例文件。只有当它(标题)使用 bash 存在时,我才想删除该文件的第一行(标题)。
id name job_id
1 john 25
2 adam 45
3 paul 75
您可以sed
使用该-i
选项在一次操作中完成(假设您的版本sed
支持它 - 并非全部都支持)。例如:
sed -i.bak -e '1{/^id name job_id/d;}' file
这需要文件的第 1 行并将大括号中的命令应用于它。大括号搜索显示的模式并删除该行。如果第一行不匹配,则不会被删除。其他行保持不变。
Mac OS X 需要分号和备份后缀sed
;使用 GNU sed
,您可以省略其中一个或两个。
您也可以使用 awk 来执行此操作:
awk 'NR!=1||$0!="id name job_id" {print $0}' file > newfile
filename='myfile'
[[ $(head -n 1 -- "$filename") == 'id name job_id' ]] && sed -i '1d' -- "$filename"
if head -1 original.txt | grep -Fxq 'id name job_id'
then tail -n+2 original.txt > newdoc.txt
fi
编辑:如果标题存在,则仅检查第一行并在新文件中打印其余部分。如果不是,则原件不变。
sed '/id name job_id/d' fileName