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

使用if语句使用shell脚本从文件中删除第一行,shell,Shell,有些导入的数据文件的头一行有标题名,而有些没有标题。带有标题的字段在第一行的第一个字段总是“company”。为了将它们加载到DB中,我需要去掉第一行。所以我需要编写.sh scrict,它只删除第一列first row=“company”的文件的第一行。我想我需要将awk与if语句结合起来,但我不知道具体如何结合。如果您确定字符串“company”只作为标题上的第一个字段出现,您可以这样做 if head -n 1 input.csv | cut -f 1 -d ',' | grep com

有些导入的数据文件的头一行有标题名,而有些没有标题。带有标题的字段在第一行的第一个字段总是“company”。为了将它们加载到DB中,我需要去掉第一行。所以我需要编写.sh scrict,它只删除第一列first row=“company”的文件的第一行。我想我需要将awk与if语句结合起来,但我不知道具体如何结合。

如果您确定字符串“company”只作为标题上的第一个字段出现,您可以这样做

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
sed -e /^company,/d  oldfile > newfile
假设分隔符是逗号

另一个解决方案:

if [ head -1 oldfile | grep -q "^company,"] ; then
   sed -e 1d oldfile > newfile
else
   cp oldfile newfile
fi
如果您确定字符串“company”仅显示为标题上的第一个字段,则可以这样做

sed -e /^company,/d  oldfile > newfile
假设分隔符是逗号

另一个解决方案:

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

如果需要,则无
。只需按照您提出的要求直接执行即可:

打印第一行,除非它以公司开头:

strip_header_if_present() {
    IFS='' read -r first_line
    echo "$first_line" | grep -v ^company,
现在打印其余行:

    cat
}
要使用此shell函数,请执行以下操作:

strip_header_if_present < input.csv > output.csv
strip\u header\u如果存在output.csv

如果需要,则无
。只需按照您提出的要求直接执行即可:

打印第一行,除非它以公司开头:

strip_header_if_present() {
    IFS='' read -r first_line
    echo "$first_line" | grep -v ^company,
现在打印其余行:

    cat
}
要使用此shell函数,请执行以下操作:

strip_header_if_present < input.csv > output.csv
strip\u header\u如果存在output.csv

sed'1{/^company/d}文件
以确保
公司
位于第一行。或
sed'1{/^company/d}文件
以确保
公司
位于第一行。