여러 줄의 접두사를 붙이고 개행을 유지합니다.

여러 줄의 접두사를 붙이고 개행을 유지합니다.

cat 및 grep의 출력에서 ​​변수가 설정된 bash 스크립트가 있습니다.

result=`cat $file | grep -A2 "$search"`

결과에는 3개의 EG 줄이 포함됩니다.

This is Line 1
This is line 2
This is line 3

각 줄 앞에 공백을 넣어야 합니다.

 This is Line 1
 This is line 2
 This is line 3

나는 다음을 시도했습니다 :

result=`echo $result | awk '{print " "$0}'`

그리고 몇 가지 다른 sed 명령의 결과는 다음과 같습니다.

 This is Line 1 This is line 2 This is line 3

공백을 추가하지만 새 줄을 제거합니다.

참고: 이는 개행 문자가 필요한 파일에 저장됩니다.

답변1

awk '{printf " %s\n",$0}' file-in.txt > file-out.txt

sed

sed -e 's/^/ /' file-in.txt > file-out.txt

sed (동일 파일)

sed -i -s 's/^/ /' file.txt

답변2

awk중지를 사용하는 대신 처음 시작 시 grep추가 처리를 수행합니다 ( 시뮬레이션 $result임 ).grep-A Num

result=$(awk -v patt="$search" '$0 ~ patt{S=1}
         S && ($0 ~ patt || ++n<3) {print " "$0} n==3{n=0}' infile)

$result그런 다음 출력 파일로 인쇄/저장합니다 .

printf '%s\n' "$result" > outfile

관련 정보