Linuxではファイルの作成方法\n(または行区切り文字)を持つ1行は複数行に変換されます。
fileA.txt:
trans_fileA::abcd\ndfghc\n091873\nhhjj
trans_fileB::a11d\n11hc\n73345
パスワード:
while read line; do
file_name=`echo $line | awk -F'::' '{print $1}' `
file_content=`echo $line | awk -F'::' '{print $2}' `
echo $file_name
echo $(eval echo ${file_content})
echo $(eval echo ${file_content}) > fileA.txt
trans_fileAは次のようになります。
abcd
dfghc
091873
hhjj
提案してください
ベストアンサー1
bash
シェルの使用:
while IFS= read -r line; do
name=${line%%::*}
contents=${line#*::}
echo -e "$contents" >"$name"
done <fileA.txt
これは、入力ファイルを 1 行ずつ読み込み、次を使用して読み取った行から出力ファイル名と内容を抽出します。標準パラメータの置換。一致の最後から最長の一致部分文字列を削除し、${variable%%pattern}
一致の先頭から最短の一致部分文字列を削除します。$variable
pattern
${variable#pattern}
$variable
pattern
line
read -r
バックスラッシュが次のようになるように値を読みます。予約するデータから。それ以外の場合は-r
保管されread
ません。また、サイドスペースがデータから削除されないように、呼び出しIFS
前に空の文字列に設定しました。read
出力は次のように行われますecho -e
。説明するデータのエスケープシーケンス。これは\n
、データの改行文字を実際の改行文字に置き換えることを意味します。
このコマンドを実行すると、次のようになります。
$ ls -l
total 12
-rw-r--r-- 1 kk wheel 71 Jun 17 16:28 fileA.txt
-rw-r--r-- 1 kk wheel 24 Jun 17 16:31 trans_fileA
-rw-r--r-- 1 kk wheel 16 Jun 17 16:31 trans_fileB
$ cat trans_fileA
abcd
dfghc
091873
hhjj
$ cat trans_fileB
a11d
11hc
73345
関連: