次のように、各行を引用符で囲みます。
abcdefg
hijklmn
opqrst
に変換:
"abcdefg"
"hijklmn"
"opqrst"
Bashシェルスクリプトでこれを行う方法は?
次のコマンドを使用します。
xargs -I{lin} echo \"{lin}\" < your_filename
xargs
標準入力 (ファイルからリダイレクト) を取得し、一度に 1 行をプレースホルダーに渡し、{lin}
次にコマンドを実行します。この場合echo
は二重引用符がエスケープされています。
次のように、xargsのオプションを使用して-i
、プレースホルダーの名前を省略することができます。
xargs -i echo \"{}\" < your_filename
どちらの場合も、IFS はデフォルト値であるか'\n'
、少なくとも設定されている必要があります。
sed を使用します。
sed -e 's/^\|$/"/g' file
ファイルに空の行が含まれている場合は、さらに手間がかかります。
この sed は、空行を無視する場合にも機能するはずです。
sed -i.bak 's/^..*$/"&"/' inFile
また
sed 's/^.\{1,\}$/"&"/' inFile
sed と awk が最良の解決策だと思いますが、シェルだけを使用する場合は、ここに小さなスクリプトがあります。
#!/bin/bash
chr="\""
file="file.txt"
cp $file $file."_backup"
while read -r line
do
echo "${chr}$line${chr}"
done <$file > newfile
mv newfile $file