파일 1.txt
ABC123DEF
START
A
B
C=??
D
END
UVZ789XYZ
START
A
B
C=??
D
END
예상 출력은 다음과 같습니다.
ABC123DEF
START
A
B
C=123
D
END
UVZ789XYZ
START
A
B
C=789
D
END
"sed"/"awk"/"tcl"/"vim"을 사용하여 이를 수행하는 방법은 무엇입니까?
답변1
이것
G
/^(.).*\n\1/ { P; d }
s/^(.)(.*)\n.*/\1\n\1\2/
p
s/^(.)\n.*/\1/
h
영감으로 사용할 수 있는 sed 프로그램입니다. 이는 다음을 수행합니다.
]# cat infile
alpha
and
alas
arc
fat
foo
zoo
boat
bee
bed
]# ./letter-group.sed infile
a
alpha
and
alas
arc
f
fat
foo
z
zoo
b
boat
bee
bed
약간의 변화가 필요하지만 기본 아이디어는 재사용할 수 있다고 생각합니다. info sed
더 알아보기.
#!/bin/sed -Enf
# Insert a title line (group header) when first letter changes
#
#
# If first letter stays the same, just print input line and exit
#
G
/^(.).*\n\1/ { P; d }
# new letter: move it to first line, and print
#
s/^(.)(.*)\n.*/\1\n\1\2/
p
# hold the new letter
s/^(.)\n.*/\1/
h
s///
여기서는 , \1
보류/가져오기 등 모든 요소를 볼 수 있습니다 . 흥미로운 사양이 나오면 적응하려고 노력할 수도 있지만 이 예는 약간 건조합니다.