Bash 쉘의 내 명령은 다음과 같이 출력됩니다.
username
country
하지만 인쇄물을 다음과 같이 수정하고 싶습니다.
username - country
감사해요.
답변1
나는 다음과 같은 일을 할 것입니다 :
$ seq 6 | awk '{printf "%s", sep $0; sep = " - "}; END {if (NR) print ""}'
1 - 2 - 3 - 4 - 5 - 6
또는:
$ seq 6 | paste -d ' - \n' - /dev/null /dev/null -
1 - 2
3 - 4
5 - 6
또는:
$ seq 5 | sed '$!N;s/\n/ - /'
1 - 2
3 - 4
5
두 줄의 출력이면 다음과 같이 할 수도 있습니다.
$ seq 2 | { IFS= read -r a; IFS= read -r b; printf '%s\n' "$a - $b"; }
1 - 2
쉘에는 bash
where , 같은 read
것들이 printf
내장되어 있어 별도의 명령을 실행할 필요가 없습니다. 에서는 bash
이 처리를 수행하기 위해 추가 프로세스 생성을 저장하는 옵션을 설정할 수 있습니다 lastpipe
(비대화형 셸 인스턴스에서만).
답변2
tr
한 문자를 다른 문자로 변환할 수 있습니다.
echo "username
country
town" | tr '\n' ' '
산출:
username country town
tr -d
문자(개행)를 아무것도 없는 것으로 바꾸는 데 사용됩니다 .
echo "username
country
town" | tr -d '\n'
산출:
usernamecountrytown
그러나 개행 문자를 몇 개의 문자로 대체하려는 경우 tr
이것만으로는 충분하지 않습니다. 그럼에도 불구하고 매우 간단한 명령이기 때문에 이에 대해 이야기하고 있습니다.
하지만 다음과 같이 할 수 있습니다 sed
.
echo "username
country
town" | sed ":a; N; s/\n/ - /; ta;"
산출:
username - country - town
답변3
awk 'ORS=" - "{print $0}' filename|awk '{gsub(/- $/,"",$0);print }'
산출
username - country
답변4
파이프를 통해 여기에 연결합니다.
sed -z 's|\n| - |'
GNU를 사용하여 sed
개행 문자를 -
.