我有这个示例文件。 我想删除这个文件的第一行(标题),只有当它(标题)存在使用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