
간단하고 빠른 질문입니다.
나는 이것을 가지고있다
awk -f file # awk use file as input
awk '/word/' file # awk show me word
awk '/32$/' text # all words with 32..
나는 이것을 원한다
# awk use file as input
awk -f file
# awk show me word
awk '/word/' file
# all words with 32..
awk '/32$/' text
awk를 사용하여 이 작업을 수행할 수 있나요? 다른 명령도 환영합니다(perl, sed, python..)
답변1
$ awk -F '[[:space:]]+#' '{print "#" $2 ORS $1 ORS}' file
# awk use file as input
awk -f file
# awk show me word
awk '/word/' file
# all words with 32..
awk '/32$/' text
#
그러나 이는 제공한 입력/출력 예제에서와 같이 각 입력 줄에서 1 앞에 공백이 있는 경우에만 작동합니다. 실제 데이터가 그렇지 않은 경우 질문을 편집하여 #
awk 코드 및/또는 주석에서 공백이 앞에 오는 것을 포함하여 보다 실제적인 입력/출력 예제를 제공하십시오.
awk '/foo # bar/' file # lines with # before bar
#
그리고 그러한 경우(특히 댓글의 s)를 처리하는 알고리즘을 알려주십시오.
답변2
그리고 perl
:
perl -i -lpe 's/(.*\S)\s+(#.*)/\2\n\1\n\n/' your-file
#
이렇게 하면 하나 이상의 공백 문자가 가장 오른쪽에 나타나는 바로 뒤에 공백이 아닌 문자 부분이 이동됩니다.
을 사용하면 -i
파일이 i
n번 편집됩니다.