はラインUNIXの出力で引用符を取得する方法は?ファイルabc.dat
1
2
3
コードが
tradeline=""
for line in $(cat abc.dat)
do
tradeline="$line,$tradeline"
done
サンプル出力を取得していますされては、 1,2,3であるが含まれていますが、私は "1"、 "2" として出力したいです、 "3"、
uは がはラインUNIXの出力で引用符を取得する方法は?ファイルabc.dat
1
2
3
コードが
tradeline=""
for line in $(cat abc.dat)
do
tradeline="$line,$tradeline"
done
サンプル出力を取得していますされては、 1,2,3であるが含まれていますが、私は "1"、 "2" として出力したいです、 "3"、
uは があなたのコードには、多くの問題があります。
また、逆の順序で数字を入力し、末尾にカンマがあります。これはおそらくあなたが望むものではありません。
がの場合は、2番目のソリューションを使用してください。
ソリューション1、正しい順序なし末尾のカンマ:
tradeline=""
sep=""
for line in $(cat abc.dat) ; do
tradeline="${tradeline}${sep}\"${line}\""
sep=","
done
echo ${tradeline}
ソリューション2、カンマを末尾と右の順:仕事のために意味のツールを使用して、はるかに簡単
tradeline=""
for line in $(cat abc.dat) ; do
tradeline="${tradeline}\"${line}\","
done
echo ${tradeline}
解決策3:
awk 'BEGIN {sep=""} {printf "%s\"%s\"",sep,$0;sep=","} END {print}' abc.dat
ソリューション3は、より高速になるため、私の優先オプションです。とは、入力行に空白を入れて処理することができます。
実際に私は前にtradelineを取得した後に最後の文字をトリミングするためにいくつかのコマンドを使用しました。 しかし、fr frの解決策は、最後にコンマなしで私にすべてを与えます ありがとうございました.............. – musicking123
\
で引用符をエスケープ
plzは私を助けることができます。
tradeline="\"$line\",$tradeline"
ありがとうございました........私はUnixに新しいです – musicking123
cat
を使用すると、1行に複数の単語がある場合でも、各単語を別々に引用することになります。また、コードは '1,2,3'ではなく '3,2,1'を生成します。
各行の前後に引用符を取得するには、あなたがread
コマンドを使用する必要があります:
tradeline=""
sep=""
cat abc.dat |
while read line
do
tradeline="$tradeline$sep\"$line\""
sep=","
done
これは、パックスのソリューションと非常によく似ている - それぞれの行を取得するためにread
の使用を除き。
解決策は '1,2,3'ではなく '3,2,1'を生成する必要があります。 –