有些数据文件在第一行导入了标题名称而其他数据文件没有标题。那些带有标题的人总是"公司"作为第一行的第一个字段。为了将它们加载到DB中,我需要摆脱第一行。所以我需要编写.sh scrict,它只删除第一列第一行="公司"的那些文件的第一行。我想我需要将awk与if语句结合使用,但我不确切知道如何。
答案 0 :(得分:1)
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 :(得分:1)
如果您确定字符串“company”仅显示为标题上的第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
答案 2 :(得分:1)
不需要if
。按照您的要求直接做到:
打印第一行,除非它以company
开头:
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