43

次のように、各行を引用符で囲みます。

abcdefg
hijklmn
opqrst

に変換:

"abcdefg"
"hijklmn"
"opqrst"

Bashシェルスクリプトでこれを行う方法は?

4

8 に答える 8

13

次のコマンドを使用します。

xargs -I{lin} echo \"{lin}\" < your_filename

xargs標準入力 (ファイルからリダイレクト) を取得し、一度に 1 行をプレースホルダーに渡し、{lin}次にコマンドを実行します。この場合echoは二重引用符がエスケープされています。

次のように、xargsのオプションを使用して-i、プレースホルダーの名前を省略することができます。

xargs -i echo \"{}\" < your_filename

どちらの場合も、IFS はデフォルト値であるか'\n'、少なくとも設定されている必要があります。

于 2014-03-25T00:26:49.117 に答える
9

sed を使用します。

sed -e 's/^\|$/"/g' file

ファイルに空の行が含まれている場合は、さらに手間がかかります。

于 2013-06-07T19:21:11.987 に答える
8

この sed は、空行を無視する場合にも機能するはずです。

sed -i.bak 's/^..*$/"&"/' inFile

また

sed 's/^.\{1,\}$/"&"/' inFile
于 2013-06-07T19:59:37.330 に答える
3

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
于 2013-06-07T19:22:49.740 に答える