새 줄이 포함된 콘텐츠가 포함된 파일을 만듭니다.

새 줄이 포함된 콘텐츠가 포함된 파일을 만듭니다.

리눅스에서는파일을 만드는 방법\n(또는 줄 구분 기호)이 있는 한 줄은 여러 줄로 변환됩니다.

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

이는 입력 파일을 한 줄씩 읽고 다음을 사용하여 읽은 줄에서 출력 파일 이름과 내용을 추출합니다.표준 매개변수 대체. 일치의 끝에서 가장 긴 일치 하위 문자열을 제거 ${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

관련된:

답변2

내 첫 번째 생각은sed 위의 fileA.txt 파일을 고려하면 다음과 같습니다.

abcd\ndfghc\n091873\nhhjj

sed다음을 포함하는 실행 newline.sed:

s/\\n/\
/g

그게 다야

sed -f ./newline.sed <./fileA.txt >./trans_fileA

다음 결과를 반환합니다 trans_fileA.

abcd
dfghc
091873
hhjj

이것이 귀하의 작업을 수행하기 위해 제가 생각할 수 있는 가장 쉬운 방법입니다.

화타이

관련 정보