이 텍스트를 뒤집는 방법:
From: "anonymous" <sip:[email protected]>;tag=1c1969267918
Call-ID: [email protected]
Max-Forwards: 70
From: "anonymous" <sip:[email protected]>;tag=1c6447025742
Call-ID: [email protected]
Max-Forwards: 70
다음을 입력하세요:
From: "anonymous" <sip:[email protected]>;tag=1c1969267918, Call-ID: [email protected], Max-Forwards: 70
From: "anonymous" <sip:[email protected]>;tag=1c6447025742, Call-ID: [email protected], Max-Forwards: 70
답변1
예상 출력에서 쉼표 뒤의 단일 공백이 중요하지 않은 경우:
$ sed 's/^[[:blank:]]*//' file | paste -d, - - -
From: "anonymous" <sip:[email protected]>;tag=1c1969267918,Call-ID: [email protected],Max-Forwards: 70
From: "anonymous" <sip:[email protected]>;tag=1c6447025742,Call-ID: [email protected],Max-Forwards: 70
먼저 sed
입력 파일의 각 행에서 초기 공백을 제거하려면 를 사용하고, paste
쉼표를 구분 기호로 사용하여 결과 행을 3개 열에 분산시킵니다.
답변2
그리고 awk
:
awk '{sub(/^[[:blank:]]*/, ""); ORS = NR % 3 ? ", " : "\n"; print}' < your-file
답변3
쉘에서 이 작업을 수행하려면 다음을 수행하십시오.
n=0
while read x; do
echo -n "$x"
n=$((n+1))
if [ $((n%3)) = 0 ]; then
echo
else
echo -n ', '
fi
done < inputfile
이것은 한 줄씩 읽고 계산됩니다. 세 번째 줄( $((n%3))
모듈러스를 계산하는 부분)마다 개행 문자를 출력하고, 그렇지 않으면 쉼표(예에서는 공백)를 출력합니다. 이렇게 하면 개행 문자 자체가 추가되는 것을 echo -n
방지할 수 있습니다 .echo
답변4
나는 그것이 더 잘될 수 있다고 믿는다. 그러나 그것은 훌륭하게 작동합니다.
gnu sed: 첫 번째 표현식은 선행 공백을 제거합니다. 두 번째 표현식은 다음 줄을 연결하여 /From:/
선행 공백을 일치시키고 제거합니다. 두 번째 표현식은 다음 줄을 연결하여 /Call-ID:/
선행 공백을 일치시키고 제거합니다.
sed -e 's/^[[:blank:]]*//' \
-e '/From:/N;s/\n[[:blank:]]*/, /' \
-e '/Call-ID:/N;s/\n[[:blank:]]*/, /'