2

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

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

5 回答 5

5

您可以sed使用该-i选项在一次操作中完成(假设您的版本sed支持它 - 并非全部都支持)。例如:

sed -i.bak -e '1{/^id name job_id/d;}' file

这需要文件的第 1 行并将大括号中的命令应用于它。大括号搜索显示的模式并删除该行。如果第一行不匹配,则不会被删除。其他行保持不变。

Mac OS X 需要分号和备份后缀sed;使用 GNU sed,您可以省略其中一个或两个。

于 2013-08-23T04:00:16.993 回答
3

您也可以使用 awk 来执行此操作:

awk 'NR!=1||$0!="id name job_id" {print $0}' file > newfile
于 2013-08-23T04:33:05.453 回答
2
filename='myfile'
[[ $(head -n 1 -- "$filename") == 'id name job_id' ]] && sed -i '1d' -- "$filename"
于 2013-08-23T03:50:41.957 回答
1
if head -1 original.txt | grep -Fxq 'id name job_id'
then tail -n+2 original.txt > newdoc.txt
fi

编辑:如果标题存在,则仅检查第一行并在新文件中打印其余部分。如果不是,则原件不变。

于 2013-08-23T04:13:10.177 回答
-3
sed '/id name job_id/d' fileName
于 2013-08-23T04:01:34.233 回答