需要从变量中删除最后七个字符。
例如,如果我的变量字符串是
COLUMN_NAME||','||
然后输出COLUMN_NAME
我已尝试过以下但最后一个管道符号仅被移除
var=$(lastline%|)
var=$(lastline%|*)
结果:COLUMN_NAME||','|
答案 0 :(得分:2)
老派的方式
echo "COLUMN_NAME||','||" | rev|cut -c 8-|rev
所以你只是反转字符串,删除第一个7
字符并再次反转字符串。
使用带有echo的$variable
也可以这样做。
你也可以使用下面的awk
,这会更快。
awk '{print substr($0, 1, length($0)-7)}'
示例:
$ export variable1="COLUMN_NAME||','||"
$ echo $variable1|rev|cut -c 8-|rev
COLUMN_NAME
$ echo $variable1|awk '{print substr($0, 1, length($0)-7)}'
COLUMN_NAME
答案 1 :(得分:2)
删除最后7个字符:
$ echo "${var%%|*}"
COLUMN_NAME
删除第一个管道后的所有内容:
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
internal class Program
{
private const string FilePath = @"C:\objLifeCycle.txt";
private static void Main(string[] args)
{
var result = GetList();
Console.WriteLine("Results received! Object Id: [{0}] time: [{1}]", result.ObjId, DateTime.Now);
//result = null;
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep(2000);
Console.WriteLine("...");
GC.Collect();
}
});
Console.ReadKey();
}
private static LinkList GetList()
{
return new LinkList(FilePath) { "link1", "link2", "link3" };
}
}
}
internal class LinkList : List<string>
{
internal string ObjId { get; set; }
internal string FilePath { get; set; }
internal LinkList(string filePath)
{
ObjId = Guid.NewGuid().ToString();
FilePath = filePath;
WriteFile($"Object LinkList with Id [{ObjId}] has been created at [{DateTime.Now}]");
}
~LinkList()
{
WriteFile($"Object LinkList with Id [{ObjId}] has been destroyed at [{DateTime.Now}]");
Environment.Exit(0);
}
private void WriteFile(string line)
{
var sw = new StreamWriter(FilePath, true);
sw.WriteLine(line);
sw.Close();
}
}
见https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
和https://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching
答案 2 :(得分:1)
您需要使用两个%
来删除最长的匹配项:
$ r="COLUMN_NAME||','||"
$ echo ${r%%|*}
COLUMN_NAME
正如BashFAQ在Removing part of a string中所说:
%
表示“从结尾删除最短的匹配 变量的内容“。
%%
表示“从结尾删除最长的匹配 变量的内容“。
答案 3 :(得分:0)
您可以从该点找到字符串的长度和索引:
str1="1234567890foobar";
strlen=${#str1};
str2=${str1:0:$strlen-7};
echo $str2;