Linux Commands – Remove All Text After X

Linux commands provide powerful tools for text manipulation, including the ability to remove all text after a specific character or pattern. This is a common task when processing log files, configuration files, or any text data where you need to truncate content at a certain point.

The Sed Command

Sed (Stream Editor) is one of the most versatile tools for text manipulation in Linux. To remove all text after a specific character X, use the following syntax:

sed 's/X.*/X/' filename

This command removes everything after the first occurrence of X while preserving X itself. The pattern X.* matches X followed by any characters, and replaces it with just X.

Example with Sed

Consider a file sample.txt with the following content:

This is a sample text file. X This extra text will be removed.

Using the sed command:

sed 's/X.*/X/' sample.txt

Output:

This is a sample text file. X

The Awk Command

Awk is another powerful text processing tool. To remove text after X using awk:

awk '{sub(/X.*/,"X")}1' filename

The sub() function substitutes the first occurrence of the pattern X.* with just X. The 1 at the end prints each line after processing.

Example with Awk

awk '{sub(/X.*/,"X")}1' sample.txt

This produces the same output as the sed command above.

The Cut Command

Cut extracts sections from each line using delimiters. To remove text after X:

cut -d 'X' -f1 filename

The -d 'X' option sets X as the delimiter, and -f1 selects the first field (everything before the delimiter).

Note: This approach removes the delimiter character X itself, unlike sed and awk.

Example with Cut

cut -d 'X' -f1 sample.txt

Output:

This is a sample text file. 

Advanced Examples

Removing Text After Last Occurrence of X

To remove text after the last occurrence of X, combine rev with sed:

rev filename | sed 's/X.*/X/' | rev

This reverses the file, removes text after the first X (which was the last in the original), then reverses back.

Processing Multiple Files

To remove text after X in all .txt files in the current directory:

for file in *.txt; do
    sed -i 's/X.*/X/' "$file"
done

The -i option edits files in-place without creating backup files.

Targeting Specific Line Ranges

To remove text after X only in lines 5-10:

sed '5,10 s/X.*/X/' filename

Comparison of Methods

Command Preserves X Regex Support Best For
sed Yes Full Complex patterns, in-place editing
awk Yes Full Complex text processing logic
cut No None Simple delimiter-based splitting

Conclusion

Linux provides multiple commands for removing text after a specific character or pattern. Sed is typically the most versatile choice for pattern-based text removal, while cut works well for simple delimiter-based operations. Choose the tool that best fits your specific text processing requirements and complexity level.

Updated on: 2026-03-17T09:01:38+05:30

408 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements