2011-06-01 21 views
1

私はLinuxのスクリプト作成者ではありません。ここに私の状況があります。シェルスクリプトでCSV文字列を解析してファイルに書き込む

シェルスクリプト(例:AL、AK、A​​S、AZ、AR、CA ...)にコマンドライン引数として渡される状態のリストがあります。シェルスクリプトは、各状態コードを1行にまとめてファイル(states.txt)に書き出す必要があります。以下を参照してください

AL 
AK 
AS 
AZ 
AR 
CA 
.. 
.. 

これは、Linuxシェルスクリプトを使用してどのように実現できますか。

ありがとうございます。

答えて

3
echo "AL,AK,AS,AZ,AR,CA" | awk -F, '{for (i = 1; i <= NF; i++) print $i}'; 
1

ナイーブソリューション:

echo "AL,AK,AS,AZ,AR,CA" | sed 's/,/\n/g' 
5

使用tr

echo "AL,AK,AS,AZ,AR,CA" | tr ',' '\n' > states.txt 
+0

回答ありがとうございます。これでやります –

-1

私はawkが最も簡単な解決策だと思いますが、あなたは、ループ内でcutを使用して試みることができます。 サンプルスクリプト(出力はstdoutに、しかし、あなたはそれをリダイレクトすることができます):

#!/bin/bash 

# Check for input 
if ((${#1} == 0)); then 
    echo No input data supplied 
    exit 
fi 

# Initialise first input 
i=$1 

# While $i still contains commas 
while { echo $i| grep , > /dev/null; }; do 
    # Get first item of $i 
    j=`echo $i | cut -d ',' -f '1'` 

    # Shift off the first item of $i 
    i=`echo $i | cut --complement -d ',' -f '1'` 

    echo $j 
done 

# Display the last item 
echo $i 

次に、あなただけの./script.sh "AL,AK,AS,AZ,AR,CA" > states.txtとしてそれを実行することができます(あなたがローカルディレクトリにscript.shとして保存し、それが実行権限を与えると仮定した場合)

関連する問題