簡體   English   中英

僅當bash中存在頭文件時,才如何從文件中刪除頭文件?

[英]How to remove the header from a file only if exist in 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM