2016-10-28 7 views
0

ヘッダー名を最初の行にインポートするデータファイルがあり、ヘッダーを持たないものもあります。ヘッダーを持つものは、最初の行の最初のフィールドとして常に「会社」を持っています。 DBにロードするには、最初の行を取り除く必要があります。ですから、最初の列が最初の行= "会社"のファイルの最初の行のみを削除する.sh scrictを書く必要があります。私はif文とawkを組み合わせる必要があると思いますが、正確にはわかりません。if文を使用してシェルスクリプトを使用してファイルから最初の行を削除します。

答えて

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

あなたは、文字列「会社」がヘッダーにのみとして第一フィールドを表示され、あなたはこの道を行くことができ、セパレータを想定

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

1

ませんif。それはcompanyで始まっていない限り

印刷最初の行::

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

今すぐ残りの行を印刷:

cat 
} 

このシェルの機能を使用するには、あなたの要件を述べたようにただまっすぐにそれを行います:

関連する問題