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