使用if语句从包含shell脚本的文件中删除第一行使用if语句

问题描述:

有一些数据文件在第一行中使用标题名称导入,而其他数据文件不具有标题。那些与标题是一直“公司”作为第一行的第一个字段。为了将它们加载到数据库中,我需要摆脱第一行。所以我需要编写.sh scrict,删除第一行第一行=“公司”的那些文件的第一行。我想我需要将awk和if语句结合起来,但我不知道如何。使用if语句从包含shell脚本的文件中删除第一行使用if语句

if head -n 1 input.csv | cut -f 1 -d ',' | grep company 
    then tail -n +2 input.csv > output.csv 
else 
    cp input.csv output.csv 
fi 

如果您确认字符串“公司”只出现作为标题1场,你可以走这条路

sed -e /^company,/d oldfile > newfile 

假定分隔符是一个逗号。

另一种解决方案:

if [ head -1 oldfile | grep -q "^company,"] ; then 
    sed -e 1d oldfile > newfile 
else 
    cp oldfile newfile 
fi 
+0

或'sed'1 {/^company/d}'档案'以确保'company'开启线。 – SLePort

没有if需要。只要做到这一点简单的,你说你的要求:

打印的第一行,除非它与company开始:

strip_header_if_present() { 
    IFS='' read -r first_line 
    echo "$first_line" | grep -v ^company, 

现在打印剩余的线:

cat 
} 

要使用此外壳功能:

strip_header_if_present <input.csv> output.csv