텍스트 파일에서 이 줄을 원합니다
This is to become line 1 and that is line 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}'