Sunday, 9 March 2025

How to Change CSV Delimiters in One Line Using Command


If you’ve ever worked with CSV files, you know how important it is to have the right delimiter. Sometimes, you need to change a CSV file from comma (,) to semicolon (;) delimiters (or vice versa). In this post, I’ll show you how to do this quickly using Linux command-line tools like sed, awk, and tr. Let’s dive in!

Why Change CSV Delimiters?

CSV files are commonly used for data exchange, but different systems or applications may require different delimiters. For example:

  • Some European systems use semicolons (;) because commas are used as decimal separators.
  • Certain tools or scripts may expect a specific delimiter.

Whatever your reason, Linux command-line tools make it easy to switch delimiters in seconds!

Method 1: Using sed

sed (Stream Editor) is a powerful tool for text processing. To change commas to semicolons, use this command:

sed 's/,/;/g' input.csv > output.csv

Explanation:

  • s/,/;/g: Replaces all commas (,) with semicolons (;).
  • input.csv: The original file.
  • output.csv: The new file with semicolons as the delimiter.

Example:

If input.csv contains:

Name,Age,Location
John,30,New York
Jane,25,Los Angeles

The output (output.csv) will be:

Name;Age;Location
John;30;New York
Jane;25;Los Angeles

Method 2: Using awk

awk is another versatile tool for text processing. Here’s how to change delimiters with awk:

awk -F',' 'BEGIN {OFS=";"} {print $0}' input.csv > output.csv

Explanation:

  • -F',': Sets the input field separator to a comma.
  • BEGIN {OFS=";"}: Sets the output field separator to a semicolon.
  • {print $0}: Prints the entire line with the new delimiter.
  • input.csv and output.csv: The input and output files.

Example:

The same input.csv will produce the same output.csv as above.

Method 3: Using tr

tr (Translate) is a simple tool for character replacement. Here’s how to use it:

cat input.csv | tr ',' ';' > output.csv

Explanation:

  • cat input.csv: Reads the input file.
  • tr ',' ';': Translates commas to semicolons.
  • > output.csv: Saves the result to a new file.

Example:

Again, the same input.csv will produce the same output.csv.

Which Method Should You Use?

  • sed: Best for simple replacements.
  • awk: Great for complex transformations or when you need to process specific columns.
  • tr: Perfect for quick, single-character changes.

Handling Special Cases

  • Spaces in Fields: If your CSV contains spaces, ensure the delimiter change doesn’t break the structure.
  • Quoted Fields: For CSV files with quoted fields (e.g., "John, Doe",30,"New York"), use tools like csvformat (from csvkit) or mlr (Miller) for better handling.

Conclusion

Changing CSV delimiters in Linux is easy with tools like sed, awk, and tr. Whether you’re switching from commas to semicolons or vice versa, these one-line commands will save you time and effort.

Got questions or need further clarification? Drop a comment below! And don’t forget to share this post if you found it helpful. 🐧✨

No comments:

Post a Comment

How to Combine CSV Files using Command

Combining CSV files is a common task when working with data in Linux. Whether you’re merging logs, consolidating reports, or preparing dat...