只有在存在于bash中的情况下如何从文件中删除标题?

我有这个示例文件。 我想删除这个文件的第一行(标题),只有当它(标题)存在使用bash

id name job_id 1 john 25 2 adam 45 3 paul 75 

你可以使用-i选项在一个操作中使用sed (假设你的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