使用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
答
没有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
或'sed'1 {/^company/d}'档案'以确保'company'开启线。 – SLePort