
나는 텍스트 파일의 이 줄을 원합니다
This is to become line 1 and that is line 2
다음과 같이 2줄로 나누면 됩니다.
This is to become line 1
and that is line 2
나는 단일 문자가 아닌 어떤 것도 편집/잘라내기/제거하고 싶지 않으며 단지 한 줄이 아닌 두 줄의 텍스트로 끝나고 분할이 발생해야 하는 위치를 결정할 수 있기를 원합니다. sed
또는 awk
또는 split
이를 수행하려면 어떻게 해야 합니까 ? 어떤 것을 사용하든 상관은 없지만 sed
가능하다면 더 선호합니다...
답변1
"and"라는 단어에서 줄을 분할하려는 경우에는 이 방법이 작동합니다.
echo "This is to become line 1 and that is line 2" | sed 's/and/\nand/g'
This is to become line 1
and that is line 2
사용 중인 sed 버전에 따라 마일리지가 달라질 수 있습니다.
업데이트:
분할하려면 두 번째 줄의 시작으로 사용하려는 용어/요소 앞에 "\n"을 추가하기만 하면 됩니다.
echo "Sun rise: <...strong...>07:24 am<../..strong..><..br ../..> Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..> " | sed 's/Sun set/\nSun set/'
Sun rise: <...strong...>07:24 am<../..strong..><..br ../..>
Sun set: <..strong..>07:31 pm<../..strong..><..br.. /..>
답변2
원하는 대로 awk
변경할 수 있도록 을 사용하여 개인 구현을 추가합니다 .separator
echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'
awk
나는 변수를 쉽게 사용할 수 있기 때문에 항상 사용을 선호합니다 . 다른 기준으로 라인을 분할하려는 경우구분 기호, 간단히 값을 다른 값으로 변경할 수 있습니다 separator
.
두 번째 줄에서 잘라내고 싶다면 separator
(읽고 싶지 않다는 의미입니다."그리고 2호선", 하지만 "2호선"):
echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'