新しい行を含むコンテンツを含むファイルを作成します。

新しい行を含むコンテンツを含むファイルを作成します。

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}一致の先頭から最短の一致部分文字列を削除します。$variablepattern${variable#pattern}$variablepattern

lineread -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

関連:

おすすめ記事