Red*_*son 6 bash shell awk grep sed
所以我有一个文本文件,它可能有一个制表符作为其字段分隔符(分隔符),或者可能有一个空格作为字段分隔符。我想检查该文本文件是否已制成表格,否则我将对该文件执行其他操作。我正在使用 bash 脚本。所以我对任何纯 bash、sed、awk、grep 等都持开放态度(注意:它们都是 GNU)。所以我正在考虑这样的结构:
if [if delimiter is tab]; then
#do soemthing
elif [if delimiter is space]; then
#do something else
fi
Run Code Online (Sandbox Code Playgroud)
有什么建议么?如果需要进一步解释,请告诉我。谢谢!
以下是有关文本文件外观的更新说明:
如果文本文件有制表符作为分隔符,则它在每一行上进行分隔。如果文本文件以空格作为分隔符,则不会对每一行进行分隔。
以下是我可能遇到的文本文件的示例:
分隔符是制表符:
col1 col2 col3
-------
1 2 3
4 5 6
Run Code Online (Sandbox Code Playgroud)
分隔符为空格: (空格在 12 和 3 && 4 和 56 之间)
col1col2col3
-----------
12 3
4 56
Run Code Online (Sandbox Code Playgroud)
假设当文件以制表符分隔时,制表符仅存在于第一行,那么这
if awk '{exit !/\t/}' "$file"; then
: # tab file
else
: # space file
fi
Run Code Online (Sandbox Code Playgroud)
应该做你想做的事。
还:
if [ -n "$(sed -n '/\t/p;q' "$file")" ]; then
: # tab file
else
: # space file
fi
Run Code Online (Sandbox Code Playgroud)