从文本文件中删除 ":" 和 "\n" 之间的所有内容

Wey*_*van 2 text-processing

我有一个包含以下行的大文本文件(263 行):

image_name.jpg: *lots of spaces* JPEG image data, JFIF standard 1.01, resolution (DPI), density 96x96, segment length 16, baseline, precision 8, 1024x768, frames 3 \n
image_name.jpg: *lots of spaces* JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 70", progressive, precision 8, 960x540, frames 3 \n
image_name.png: *lots of spaces* PNG image data, 752 x 760, 8-bit/color RGBA, non-interlaced \n
Run Code Online (Sandbox Code Playgroud)

如何一次删除:\n之间的所有文本?

Mic*_*mer 6

cut

cut -d: -f1 file
Run Code Online (Sandbox Code Playgroud)

sed

sed -e 's/:.*//' file
Run Code Online (Sandbox Code Playgroud)

awk

awk -F: '{print $1}' file
Run Code Online (Sandbox Code Playgroud)

随着GNUgrep许多 BSD grep小号(但不是POSIX grep):

grep -o '^[^:]*' file
Run Code Online (Sandbox Code Playgroud)

cut 是最短的。

如果您想就地修改文件,您sed可能有一个-i这样做的选项- 但具体如何工作取决于您的平台。否则,> file2 && mv file2 file最后它们中的任何一个都将起作用。

或者,ed在任何地方都使用, 就地:

printf ',s/:.*/\nw\n' | ed file
Run Code Online (Sandbox Code Playgroud)